如何重置ASP.NET MVC客户端验证模式?

时间:2010-06-09 08:26:42

标签: asp.net-mvc asp.net-mvc-2 client-side-validation

我在ASP.NET MVC 2框架中遇到了客户端验证方面的一些麻烦,希望有人可以帮助我。

在某些情况下,我发现能够重置表单的内容或只是单个输入元素是有用的,我需要任何验证错误消失。这本身并不是很难,这里提供的建议很有效: How do I clear MVC client side validation errors when a cancel button is clicked when a user has invalidated a form?

问题在于,当触发时,客户端验证会进入主动模式,在每次按键时以及输入失去焦点时执行验证。还有一种很好的方法可以重置这种状态吗?

1 个答案:

答案 0 :(得分:2)

事实证明,我的一些问题可以通过将重置按钮设置为验证框架所遵循的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;
    });
}

该函数的最后一部分设置值,指示验证框架字段未更改且之前未触发验证错误。