2017-10-19 122 views
0

我正在使用jQuery驗證& jquery.validate.unobtrusive在我的應用程序上。驗證錯誤消息未清除

在我的頁面上我有大約4-5個控件。其中一些是隱藏的。我的頁面上有3個按鈕。點擊第一個按鈕,我顯示隱藏的控件(單選按鈕和下拉列表)。所有這些都是必填字段。當用戶點擊提交按鈕的其他按鈕時,所有必填字段顯示正常。第三個按鈕用於在具有自己控件的不同視圖之間切換。

我的問題是,當用戶使用第二個按鈕提交表單,並且如果字段未填充,它顯示所需的字段消息罰款。此時,當我點擊第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

您可以使用下面的代碼來清除錯誤:

//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(); 

這取自:How to clear jquery validate errors