JQuery Validate插件 - 在懒惰的时候对自定义方法进行急切验证

时间:2012-04-24 08:23:53

标签: jquery jquery-validate

验证插件似乎热切地验证我应该是懒惰的自定义方法,所有其他验证都是懒惰的(即直到表单提交之后)。

自定义方法:

$.validator.addMethod("refDataAcInput", function(value, element)
{
    return ($(element).val() == "" || $(element).data("hasValidSelectedValue") != null);
}, "The item must be a valid selected item.");

验证插件init:

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"
});

任何想法如何让这种情况懒散地发生?

1 个答案:

答案 0 :(得分:2)

问题是您已在自定义方法中构建了required规则。

$.validator.addMethod("refDataAcInput", function(value, element) {
    return ($(element).val() == "" || $(element).data("hasValidSelectedValue") != null);
}, "The item must be a valid selected item.");

删除$(element).val() == ""并替换为this.optional(element) ...

$.validator.addMethod("refDataAcInput", function(value, element) {
    return (this.optional(element) || $(element).data("hasValidSelectedValue") != null);
}, "The item must be a valid selected item.");

然后,如果您还希望该字段为required,只需声明required规则以及自定义refDataAcInput规则。

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