【问题标题】:How can I force jquery validator to trigger validation method even if form values are unchanged即使表单值未更改,如何强制 jquery 验证器触发验证方法
【发布时间】:2016-07-07 14:23:23
【问题描述】:

我有一个小的 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 来运行每次用户点击按钮,不管表单值是否被改变。

【问题讨论】:

  • 调用valid() 方法。 $('form').valid()
  • @RoryMcCrossan OnClientClick???我尝试在那里调用它,但它没有帮助。它不会每次都被解雇。它的作用与上面的代码相同。

标签: javascript jquery asp.net forms validation


【解决方案1】:

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

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

为此,请将此行代码放在顶部,然后再调用验证器。

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

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

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

这会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2011-11-24
    相关资源
    最近更新 更多