jQuery Validation Plugin – 根据下拉响应制作复选框组

我第一次使用带有HTML表单的jQuery Validation插件。 我习惯使用普通的旧javascript,但我非常喜欢这个插件! 无论如何,我坚持尝试做一些有条件的validation。

场景:我在一个表单中有一个由两部分组成的问题。 第一部分是是/否下拉(必填)。 第二部分是一组复选框,如果您在上一个下拉列表中选择“是”,则必须至少检查其中一个复选框。

8. Some question to answer Yes or No to...

Yes No

If Yes, indicate which areas...




请注意,这是一个相当大的调查的一部分,所以为了更容易和更快地整理,我使每个响应成为一个人,而不是使用数组。

我相信我用来validation复选框的代码来自: validation至少一个复选框

所以现在,我的函数看起来像这样:

 $(function(){ $.validator.addMethod('Q8yes', function (value) { return $('.Q8yes:checked').size() > 0; }, 'Please check at least one box for Question 8.'); var checkboxes8 = $('.Q8yes'); var checkbox_names8 = $.map(checkboxes8, function(e,i) { return $(e).attr("name")}).join(" "); $('#survey').validate({ groups: { checks8: checkbox_names8 }, rules: { Q8: "required", }, messages: { Q8: "Please answer Question 8.", }, errorContainer: $('#errorContainer'), errorLabelContainer: $('#errorContainer ul'), wrapper: 'li' }); }); 

我一直在尝试将addMethod包装在If语句中,但无法弄明白。 我甚至不确定这是不是正确的想法。

非常感谢您的帮助! 谢谢!

有几种方法可以做到这一点,你正在为其中一个方法做准备。 我会建议一种不同的方式。 首先,将您的复选框重新组织为具有相同name属性但具有不同value属性的组合是有意义的。 这将使它们在jQuery Validate中表现得更好。 这就是你现在拥有的:

  

改为:

  

现在,为实际的jQuery Validate代码。 如果按照我建议的方式执行此操作,您可能不需要组,相反,您可以使用如下所示的rules

 rules: { Q8: "required", Q8yes: { required: '#Q8 option[value="Yes"]:selected' }, Q8yesDlist: { required: '#Q8yesD:checked' } } 

我已经使用了所需规则的dependency-expression版本。

这是它在行动中的样子: http : //jsfiddle.net/ryleyb/fccPf/