即使表单值未更改,如何强制jquery验证程序触发验证方法

时间:2016-07-07 14:23:24

标签: javascript jquery asp.net forms validation

我有一个小的aspx表单,我使用jquery验证器进行验证。

var validator = $('form').validate({
    invalidHandler: function (event, validator) {
        errorsCount.Count = errorsCount.Count + 1;
        if (errorsCount.Count >= 3) {
            window.location.replace("http://" + window.location.hostname + ":" + window.location.port + "/RequestError.aspx");
        }
    },
    submitHandler: function (form) {
        errorsCount.Count = 0;
        form.submit();
    },
    rules: {
        txtFirstName: {
            required: true,
            maxlength: 50,
            containsAlphaCharacter: true
        }
    },
    onkeyup: false,
    messages: {
        txtFirstName: {
            required: EnrollmentValidationMessages.English.REQUIRED_FIELD,
            maxlength: EnrollmentValidationMessages.English.MAX_STRING_LENGTH
        }
    }
});

使用此设置,如果我在任何字段上导致验证错误并点击提交按钮,该方法将运行正常。但是,如果我再次点击提交按钮,则该方法将无法运行。这是我需要解决的问题。基本上我需要invalidHandler来运行用户每次点击按钮,无论表单值是否被更改。

1 个答案:

答案 0 :(得分:0)

提交表单后,jQuery验证程序将缓存先前的值。除非您更改无效的值或更改表单中任何字段的值,否则它将不会提交。

要强制jquery验证器在不更改字段值的情况下再次重新验证,必须从jquery验证器中删除以前缓存的值。

为此,请在调用验证程序之前,将此代码行放在顶部。

$("#form :input").removeData("previousValue");

或者如果您只想删除特定值,

$("#txtFirstName").removeData("previousValue");

这将起作用。