Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 验证至少一个子复选框,对应于复选框数组的选中元素_Javascript_Jquery_Validation_Checkbox - Fatal编程技术网

Javascript 验证至少一个子复选框,对应于复选框数组的选中元素

Javascript 验证至少一个子复选框,对应于复选框数组的选中元素,javascript,jquery,validation,checkbox,Javascript,Jquery,Validation,Checkbox,我在具有一组嵌套复选框组的表单上实现了jQuery验证。主复选框是复选框数组的一个元素。如果选中主复选框,则至少必须选中子复选框上的复选框。子复选框位于div中,id是使用主复选框的值生成的 下面的代码可以工作,但我确信这可以简化很多。我想请这里的专家们改进一下。提前谢谢 $.validator.addMethod("atLeastOne", function(value, element) { var flag = true; $('.mod_check').each(func

我在具有一组嵌套复选框组的表单上实现了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");

一种改进的方法是在遇到任何一个未选中的子项复选框时,从$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");

因此,剩余的迭代是不需要的。

您是否也可以共享html?您有一个很好的观点,但我正在寻找一些东西来循环通过主复选框数组的复选框,但我遇到了一些问题。这方面有什么建议吗?谢谢。这个问题可能是由于选择器造成的,如果你想发布HTML也会有帮助。现在,无论是否选中,每个复选框都会在所有复选框中循环。我们只需要检查一下就可以了,对吧?这对我不起作用。