jQuery Validation Plugin:validation具有不同名称的复选框

我有一组4个复选框,都有不同的名称,并要求至少检查1。

我把他们所有的课程设置为’require-one’。

     $(document).ready(function(){ $("#itemForm").validate({ rules: { check1: { required : { depends: function(element) { $('.require-one:checked').size() == 0; } } } } }); });    

如果你在$('.require-one:checked').size() == 0;之前输入$('.require-one:checked').size() == 0; 但是,现在我的问题是如果选中Checkbox#1,错误消息将只会消失。 如果选中Checkbox#2,它将不会消失,但会提交。 如果选中任何复选框,如何删除错误?

 rules: { 'nameOfAnyCheckbox': { required : { depends: function(element) { return $('.require-one:checked').size() == 0; } } } 

贾斯汀有正确的答案。 这是一个扩展,它将所有复选框的错误报告合并为一条消息:

http://jsfiddle.net/twd8j0tu/

 $.validator.addMethod('require-one', function (value) { return $('.require-one:checked').size() > 0; }, 'Please check at least one box.'); var checkboxes = $('.require-one'); var checkbox_names = $.map(checkboxes, function(e,i) { return $(e).attr("name")}).join(" "); $("#itemForm").validate({ groups: { checks: checkbox_names }, errorPlacement: function(error, element) { if (element.attr("type") == "checkbox") error.insertAfter(checkboxes.last()); else error.insertAfter(element); } }); 

(请注意,在jquery.validate.js版本1.10.0之后,此代码似乎不起作用。您必须为以后的版本修改它)。

用火箭发射器打飞?

 $('.require-one:checked').size() == 0; 

使用它的名称在任何一个复选框上应用规则。 要使表单有效,此复选框必须通过validation。 要使此复选框有效,必须至少选中4个复选框中的一个。

 $("#itemForm").validate({ rules: { 'check1': { required: { depends: function(element) { return $('.require-one:checked').size() == 0; } } } } }); 

更新2:

http://jsfiddle.net/MkPtP/1/

我认为@Anurag是在正确的道路上。 看看这个工作版……

http://jsfiddle.net/Y23ec/

同样的想法只是一种不同的方式。

 
jQuery(document).ready(function () { $.validator.addMethod('validate-checkbox-oneormore', function (value) { return $('.require-one:checked').size() != 0; }, 'need a value'); jQuery('#itemForm').validate({}); });