我在大表单上使用jQuery Validate插件,并且已经使用require_from_group方法(after posting previously)确保至少有一个来自一组检查三个复选框。确保至少有一个从三个复选框使用jQuery验证
但是,我已经ran into an issue与这阻止其他规则工作。我已经申请了一个suggested patch,但这似乎并没有正常工作(如上面提到的GitHub问题)。
所以我需要找到另一种方法来验证这组三个复选框字段(请注意,我需要专门针对这组三个checkboes,因为我在表单上有其他不需要验证的复选框字段),但我不确定现在从哪里开始。我想我需要添加一些自定义规则到我的jQuery验证代码中,但是我不确定现在从哪里开始,所以要感谢一些建议,谢谢。
这里是我的出发HTML(剥离到最基本这个问题):
<form class="my_form" method="post" action="/" >
<div><ul class="form_errors"></ul></div>
<label><input class="my_checkbox_group" id="my_checkbox_1" name="my_checkbox_1[]" type="checkbox" value="Yes"> My checkbox 1</label>
<label><input class="my_checkbox_group" id="my_checkbox_2" name="my_checkbox_2[]" type="checkbox" value="Yes"> My checkbox 2</label>
<label><input class="my_checkbox_group" id="my_checkbox_3" name="my_checkbox_3[]" type="checkbox" value="Yes"> My checkbox 3</label>
<input type="submit" value="Submit" />
</form>
这里是我的出发JS(这使得所有三个强制性的复选框,但我只是想从三个至少一个是选中):
$(".my_form").validate({
errorLabelContainer: ".form_errors",
wrapper: "li",
rules: {
'my_checkbox_1[]': { required: true },
'my_checkbox_2[]': { required: true },
'my_checkbox_3[]': { required: true }
},
messages: {
'my_checkbox_1[]': "This field is required",
'my_checkbox_2[]': "This field is required",
'my_checkbox_3[]': "This field is required"
}
});
编辑1:对不起,我应该补充说,每个复选框的名称属性不能是相同的。这些名称映射到CMS中的特定自定义字段名称,因此如果它们完全相同,则在提交表单时,字段中的值将不会正确保存。这也是为什么我从未遵循jQuery Validate demo page上的第二个例子的原因。
非常感谢你,Sparky! :)我刚刚得到这个与我的实际形式工作,它的工作很好。我也用它为另一组复选框添加了一个新的自定义方法,所以这是一个很好且可重复/灵活的解决方案。 – Stephen 2013-03-06 09:50:38
@Stephen你可以通过返回$('。my_checkbox_group:checked')来修剪这个。length> 0 – 2013-03-06 09:54:30
@politus - 谢谢,我来看看这个。 – Stephen 2013-03-06 13:35:13