2013-10-11 71 views
1

我有一個窗體上有一組嵌套複選框組實現了jQuery驗證。主複選框是複選框數組的一個元素。如果選中主複選框,則至少必須選中子複選框。子複選框位於div中,並使用主複選框的值生成id。驗證至少一個孩子複選框,對應於複選框數組的一個選中元素

下面的代碼有效,但我相當肯定這可以簡化更多。我會請求這裏的專家改善這一點。提前致謝。

$.validator.addMethod("atLeastOne", function(value, element) { 
    var flag = true; 
    $('.mod_check').each(function(){ 
    if (this.checked){ 
     if($('#actions_'+$(this).val()).find('input[type=checkbox]:checked').length == 0) 
      flag = false; 
    } 
}); 
return flag; 
}, "Select at least one of the actions"); 
+1

你也可以分享html也 –

回答

0

一種改進方法是當你遇到任何一個未選中的子項複選框時,從$ .each中斷。

$.validator.addMethod("atLeastOne", function(value, element) { 
var flag = true; 
$('.mod_check').each(function(){ 
if (this.checked){ 
    if($('#actions_'+$(this).val()).find('input[type=checkbox]:checked').length == 0) 
     flag = false; 
     return; 
} 
}); 
return flag; 
}, "Select at least one of the actions"); 

所以剩餘的迭代不是必需的。

+0

你有一個好點,但我正在尋找一些東西來循環通過主複選框陣列的複選框,但我有一些問題。這個方向的任何建議?謝謝。 –

+0

這個問題可能是由於選擇器,如果你發佈HTML也會有幫助。 –

+0

現在,每個循環都在選中所有複選框,無論它們是否被選中。我們可以循環通過選中的,對吧?它不適合我。 –

相關問題