我有一个小的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来运行用户每次点击按钮,无论表单值是否被更改。
答案 0 :(得分:0)
提交表单后,jQuery验证程序将缓存先前的值。除非您更改无效的值或更改表单中任何字段的值,否则它将不会提交。
要强制jquery验证器在不更改字段值的情况下再次重新验证,必须从jquery验证器中删除以前缓存的值。
为此,请在调用验证程序之前,将此代码行放在顶部。
$("#form :input").removeData("previousValue");
或者如果您只想删除特定值,
$("#txtFirstName").removeData("previousValue");
这将起作用。