2013-10-11 74 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

现在,每个循环都在选中所有复选框,无论它们是否被选中。我们可以循环通过选中的,对吧?它不适合我。 –

相关问题