2015-09-28 72 views
-1

我做了一個表格我的輸入字段上:驗證失去焦點多維數組

name="some_name[]" 

要張貼

時使用jQuery驗證程序來驗證領域得到它作爲一個多維數組,但我確實有 遠程功能的問題....

我的代碼:

"some_name[]": { 
    required: true, 
    digits: true, 
    rangelength: [4, 4], 
    remote: 
      { 
       type:'POST', 
       url:plugin_path+'ajax/vogn_check.php', 
      } 

它自身的形式是動態的,所以人們可以根據需要添加任意數量的行。 這裏是的問題:

當填寫字段遠程連接到它工作正常的第一行,但是當我添加第二行我必須在它實際驗證它之前兩次敲出該字段。

我試着.on('change', 'form', .on('keyup', 'form'

不過還是要挖掘出一倍!任何人都知道如何去做這件事?

回答

0

name名爲"some_name[]"的單個字段上聲明規則可行。

但是,如果您有多個字段全部共享相同的name,那麼它將無法工作。

如果您不止一次使用"some_name[]",則此插件使用name屬性來跟蹤輸入元素,並使用您的規則不適用於重複實例。

一個解決方案是在name中包含索引。

<input name="some_name[0]" .... 
<input name="some_name[1]" .... 
<input name="some_name[2]" .... 

然後你可以使用.rules()方法有「開始,以」選擇和jQuery .each()上一次所有陣列領域申報規則...

$('[name^="some_name"]').each(function() { 
    $(this).rules('add', { 
     required: true, 
     digits: true, 
     .... 
    }); 
}); 

形式它自我是動態的,所以人們可以添加任意數量的行。

由於你們的田地,動態添加,你必須每一個被創建後動態申報使用.rules('add')每個字段的規則。

我的整個答案都假定您已經使用.validate()方法正確初始化了插件。

+0

嘿斯帕蒂。 ty爲快速回答,你說什麼是有道理的,hovever我有約15個領域的規則寫這個掃管笏,他們都工作,因爲他們應該做其他正常的方式,你可以向我解釋爲什麼是這樣嗎?.... 只有6個月,因此我正在尋找學習儘可能多的posible。 提前致謝! –

+0

@dk_skal,我看不到你在說什麼,所以我不知道。就像我說的那樣,只有當你有一個帶有'somename []'的字段時,它纔會起作用。 – Sparky

-1

這個結束了我的答案

$('form#someForm').on('keyup', '.classOffSomeName', function(){ 
$(this).valid(); 
}); 

這種方法,我強迫它連續兩次驗證它使雙方makeing它驗證在keyuptapout它proporly驗證它。

要Sparky。不,你不需要一個。每個這個name="someName[]"是充滿了!但在某些情況下,您需要將其包裝在.on或.blur中,以便它可以看到動態添加的元素,例如帶有日期選擇器的動態字段,或者在此情況下爲ajax請求。

希望這可以幫助別人:)

+0

你很困惑。正如我的回答清楚地解釋的,將'.rules()'方法附加到多個元素時,'.each()'是絕對需要的。而'.rules()'方法只需要在調用'.validate()'之後創建的元素聲明規則。 **發佈後,您的問題/答案完全沒有意義,驗證將無法正常工作**。如果你希望得到一個準確的解決方案,那麼你需要寫出一個很好的問題,包括任何相關的代碼......因爲你從未提及在你的問題中使用日期選擇器,所以這個答案對其他人來說是沒有用的。 – Sparky