2012-03-13 61 views
2

我有一些領域,這是一部分組 - demo。 當用戶在第一個字段中輸入錯誤的數據時(我的演示中的數字(1到10)),則顯示錯誤消息。但是,當用戶在第二個字段(Digits(11 to 20))中輸入正確的數據時,當該組中的一個字段仍然包含不正確的數據時,此消息將消失。此外,錯誤類被刪除(這在演示中不可見)。jQuery驗證和組 - 第二個字段值正確時無法正常工作?

我該如何糾正?

+0

第13行的額外逗號? – r0m4n 2012-03-13 20:27:14

+0

@ r0m4n,正確,但不影響功能。 – 2012-03-14 17:36:22

回答

0

你想不需要成爲一個分組一個驗證...

什麼是你的代碼發生的事情是一個只驗證創建,一個錯誤元素,當你自組驗證occurrs,由默認情況下,onfocusout或onkeyup,在這些事件上測試每個具有不同於'required'的規則的元素。

因此,當驗證測試第一個字段並發現錯誤時,它會顯示消息,但是當驗證測試第二個並且這是正確的時,它會刪除錯誤消息。

你需要的是從這些字段刪除組,因爲它們不屬於某一組的驗證,或者從開始對事件的內容或KEYUP事件取消驗證

+0

他們被分組,因爲我想只有他們一個錯誤消息。我想對'focusout'進行驗證。可能,我應該創建自定義驗證規則,我應該在所有分組字段中檢查值?但是,它如何被創造出靈活的(即將與我所有的團體一起工作)? – 2012-03-14 17:41:41

+0

你想要的是有點混淆......如果我在第一個字段中插入錯誤的數據然後在第二個字段中插入錯誤的數據會發生什麼?他們兩個都是錯誤的,但只有一個(可能是第二個)會被警告爲錯誤的... – 2012-03-15 03:56:11

1

這是一個衆所周知的事實了這個問題,jQuery的確認團組。

我的解決方案非常簡單。

首先,你需要在同一類添加到所有的組在你輸入:

<input id="firstInGroup" class="groupBug"> 
<input id="secondInGroup" class="groupBug"> 
<input id="thirdInGroup" class="groupBug"> 

然後,創建一個觸發器,該類

$('.groupBug').change(function(){ 
    if($(this).siblings().valid()){ 
     //all items of the group are valid, do nothing or manually add valid class 
    }else{ 
     //add the error class to the parent div, or whatever you want for the error 
    }  

它工作了我有幾個選擇。