我有一个带有“添加”按钮的“客户端列表”页面,该按钮弹出一个引导模式,允许用户输入新客户端的详细信息。
模态的主体由一个部分视图生成,该视图最初呈现为“列表”页面的一部分。
当用户单击add时,表单将通过AJAX调用提交给服务器。如果存在模型错误,那么服务器将通过只重新发送模态的主体(带有验证错误)来响应,该主体在客户端被注入回模态中。
我使用@html.validationsummary()
和@html.validationmessagefor()
以通常的方式添加模型错误。
如果用户现在单击“取消”,然后稍后再次单击“添加”按钮,则模式将重新出现。在这种情况下,我想把它当作一个新的开始,从模态的主体中清除所有的验证错误。我知道如何清除客户端(“不引人注目”)验证错误,但如何清除@html.validationsummary()
和@html.validationmessagefor()
添加的错误。
我可以返回服务器并要求它用一个新的模型重新呈现,但我想我正在寻找一个不涉及另一个AJAX调用的快捷方式。
请尝试以下代码:
$.fn.clearErrors = function () {
$(this).each(function() {
$(this).find(".field-validation-error").empty();
$(this).trigger('reset.unobtrusiveValidation');
});
};
如果你觉得很难理解,下面的代码也有同样的效果:
function resetValidation() {
//Removes validation from input-fields
$('.input-validation-error').addClass('input-validation-valid');
$('.input-validation-error').removeClass('input-validation-error');
//Removes validation message after input-fields
$('.field-validation-error').addClass('field-validation-valid');
$('.field-validation-error').removeClass('field-validation-error');
//Removes validation summary
$('.validation-summary-errors').addClass('validation-summary-valid');
$('.validation-summary-errors').removeClass('validation-summary-errors');
}