我在 ASP.NET MVC 2 框架中的客户端验证方面遇到了一些麻烦,希望有人能帮助我。
在几种情况下,我发现能够重置表单的内容或仅重置单个输入元素很有用,并且我需要任何验证错误才能消失。这本身并不难,这里提供的建议效果很好: 当用户使表单无效时单击取消按钮时,如何清除 MVC 客户端验证错误?
问题是,当被触发时,客户端验证会进入一种激进模式,该模式会在每次按键以及输入失去焦点时执行验证。是否也有重置此状态的好方法?
我在 ASP.NET MVC 2 框架中的客户端验证方面遇到了一些麻烦,希望有人能帮助我。
在几种情况下,我发现能够重置表单的内容或仅重置单个输入元素很有用,并且我需要任何验证错误才能消失。这本身并不难,这里提供的建议效果很好: 当用户使表单无效时单击取消按钮时,如何清除 MVC 客户端验证错误?
问题是,当被触发时,客户端验证会进入一种激进模式,该模式会在每次按键以及输入失去焦点时执行验证。是否也有重置此状态的好方法?
事实证明,我的一些问题可以通过将重置按钮设置为reset
验证框架尊重的类型来解决。当发生提交失败(由于无效字段)时,这不起作用,在这种情况下,我最终使用了以下函数(selector
是一个 jQuery 选择器字符串):
resetFieldValidation: function (selector) {
var fields = $(selector);
fields.removeClass('input-validation-error').addClass('input-validation-valid');
fields.siblings('.field-validation-error').text('').removeClass('field-validation-error').addClass('field-validation-valid');
fields.each(function () {
$(this)[0]['__MVC_HasTextChanged'] = false;
$(this)[0]['__MVC_HasValidationFired'] = false;
});
}
该函数的最后一部分设置值,向验证框架指示字段未更改且先前未触发验证错误。