我正在使用jquery验证&我的应用程序上有jquery.validate.unobtrusive。
在我的页面上,我有大约4-5个控件。其中一些是隐藏的。我的页面上有3个按钮。点击第一个按钮,我显示隐藏的控件(radiobutton和dropdown)。所有这些都是必填字段。当用户单击另一个按钮(即提交按钮)时,所有必填字段都显示正常。第三个按钮用于在具有自己控件的不同视图之间切换。
我的问题是当用户使用第二个按钮提交表单时,如果没有填充字段,则会显示所需的字段消息。此时,当我单击第3个按钮切换到不同的视图,然后切换回我的视图时,错误消息仍然存在。我无法清除这些错误消息。 请参阅下面的单选按钮:
<div class="col-sm-10">
<label class="radio-inline">
<input type="radio" value="myValue1" asp-for="Name" class="required"
data-bind="checked: name" />Name value 1
</label>
<label class="radio-inline">
<input type="radio" value="myValue2" asp-for="Name" data-bind="checked:
name" />Name value 2
</label>
<span asp-validation-for="Name" class="danger"></span>
我正在使用淘汰赛并点击第三个按钮点击我切换的地方我尝试使用下面的代码清除并重置表格,但它不起作用。
var validator = $("form").validate();
validator.resetForm();
另一件事是提交表单时我使用以下代码强制验证,因为这些控件最初是隐藏的:
$("form").removeData("validator");
$("form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse($("form"));
最后,我可以看到html中生成的以下范围:
<span class="help-block-msg field-validation-valid" data-valmsg-for="Name"
data-valmsg-replace="true">
<span id="Name-error" class="">This field is required.</span>
</span>
答案 0 :(得分:0)
您可以使用以下代码清除错误:
//get the form inside we are working - change selector to your form as needed
var $form = $("form");
// get validator object
var $validator = $form.validate();
// get errors that were created using jQuery.validate.unobtrusive
var $errors = $form.find(".field-validation-error span");
// trick unobtrusive to think the elements were succesfully validated
// this removes the validation messages
$errors.each(function(){ $validator.settings.success($(this)); })
// clear errors from validation
$validator.resetForm();