Nat*_*ong 4 jquery jquery-validate
我正在使用jQuery Validate,并希望每当其中一个字段发生更改时(或者可能,只要其中一个字段成功验证)就重新验证一组字段.到目前为止,我的尝试只会产生无限循环
这可能,或插件设计是否排除它?
(具体来说,我有一个方法需要填写Y组中的至少X个,并且一旦这是真的,我希望所有这些字段重新验证.目前我正在清除他们的错误消息使用我自己的代码,但这是一个黑客 - 它还隐藏了不相关的验证问题,直到重新提交表单.)
Nic*_*ver 12
validate方法有一些选项可以支持对更改进行重新验证,即:
$(".selector").validate({
onfocusout: true,
onkeyup: true,
onclick: true,
//The rest of your options
});
Run Code Online (Sandbox Code Playgroud)
这些都默认为false
,但应提供您在问题中提到的功能.
根据评论更新:给出一个简单的测试表格,如下所示:
<form action="get">
<div><input type="text" name="part1" class="part"></div>
<div><input type="text" name="part2" class="part"></div>
<div><input type="text" name="part3" class="part"></div>
<div><input type="text" name="part4" class="part"></div>
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
jQuery将如下:
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
var valid = $(options[1], element.form).filter(function() {
return $(this).val();
}).length >= options[0];
if(!$(element).data('reval')) {
var fields = $(options[1], element.form);
fields.data('reval', true).valid();
fields.data('reval', false);
}
return valid;
}, jQuery.format("Please fill out at least {0} of these fields."));
$("form").validate({
rules: {
part1: { require_from_group: [2,".part"] },
part2: { require_from_group: [2,".part"] },
part3: { require_from_group: [2,".part"] },
part4: { require_from_group: [2,".part"] }
}
});?
Run Code Online (Sandbox Code Playgroud)
你可以在这里玩一个演示,看看你是不是这样:http://jsfiddle.net/mhmBs/
这里的方法.data()
用于让元素知道不会导致无限循环.正在编辑的实际元素,模糊(验证触发器的正常原因)仅重新验证您在组中指定的选择器中的其他元素,因此整个表单不像我的注释...它只触发它在最小元素数量.