jQuery Validate - 更改后可以重新验证一组字段吗?

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()用于让元素知道不会导致无限循环.正在编辑的实际元素,模糊(验证触发器的正常原因)重新验证您在组中指定的选择器中的其他元素,因此整个表单不像我的注释...它只触发它在最小元素数量.