我在一个具有一组嵌套复选框组的表单上实现了jQuery验证。主复选框是复选框数组的元素。如果选中主复选框,则必须至少检查子复选框。子复选框位于div中,并使用main复选框的值生成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");
答案 0 :(得分: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");
因此不需要剩余的迭代。