jQueryValidatePlugin-当自定义方法应该是惰性的时,对其进行渴望验证

jQueryValidatePlugin-当自定义方法应该是惰性的时,对其进行渴望验证,jquery,jquery-validate,Jquery,Jquery Validate,validate插件似乎急切地在我拥有的自定义方法上进行验证,当它应该是惰性的时候,所有其他验证都是惰性的(即,直到表单提交) 自定义方法: $.validator.addMethod("refDataAcInput", function(value, element) { return ($(element).val() == "" || $(element).data("hasValidSelectedValue") != null); }, "The item must be a

validate插件似乎急切地在我拥有的自定义方法上进行验证,当它应该是惰性的时候,所有其他验证都是惰性的(即,直到表单提交)

自定义方法:

$.validator.addMethod("refDataAcInput", function(value, element)
{
    return ($(element).val() == "" || $(element).data("hasValidSelectedValue") != null);
}, "The item must be a valid selected item.");
验证插件初始化:

this.$form.validate({
    ignore: null,
    invalidHandler : function()
    {
        _self.initUnsavedChangesWarning.ignorePageLeaveReq = false;
        _self.setValidationMsgVisible(true);

        $("body,html").scrollTop($("#cmFormErrorReport").position().top);
    },
    submitHandler :function(form)
    {
        //Disable form submit button - prevent duplicate request for impatient users
        $("button[type=submit]", form).prop("disabled", true);
        form.submit();
    },
    showErrors : function(errorMap, errorList)
    {
        _self.updateErrors(errorList);
        this.defaultShowErrors();
    },
    errorPlacement : function(error, $element)
    {
        $element.parents("tr").children(".fieldError").append(error);
    },
    errorClass : "jqueryError"
});

有什么办法可以让这种情况延迟发生吗?

问题是您已经将
必需的
规则构建到了自定义方法中

$.validator.addMethod("refDataAcInput", function(value, element) {
    return ($(element).val() == "" || $(element).data("hasValidSelectedValue") != null);
}, "The item must be a valid selected item.");
删除
$(元素).val()=“”
并替换为
此。可选(元素)

$.validator.addMethod("refDataAcInput", function(value, element) {
    return (this.optional(element) || $(element).data("hasValidSelectedValue") != null);
}, "The item must be a valid selected item.");
然后,如果您还希望字段是
必需的
,只需声明
必需的
规则以及自定义的
refdataaciput
规则即可


插件的默认“惰性”验证现在应该可以按预期工作。

使用[post][1]的答案。它工作得很好。[1] :@Samson,这个答案与“懒惰验证”无关
onfocusout:false
只需始终为每个字段禁用
onblur
事件。OP仅在使默认行为在一个字段上工作时遇到问题。