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/
Interesting Posts
通过JQuery Validate Plugin点击同一HTML表单中的不同按钮,validation不同的字段
使用jQuery Validate定位错误消息
jquery.maskedinput-1.3.js与jquery.validate 1.9.0冲突
jQuery Validate Plugin获得更多控制权
在javascript中使用时正则表达式无效组错误
validation动态字段jquery
Jqueryvalidation动态添加的行具有多个具有相同名称的元素
jQuery Validator解绑
jQuery Validation PlugIn:回调现场成功validation?
MVC3 ModelClientValidationRule比较2个不同的字段。 向两者添加必需的标志