2017-10-19 8 views
0

J'utilise jquery validation & jquery.validate.unobtrusive sur mon application.Messages d'erreur de validation ne pas effacer

Sur ma page j'ai environ 4-5 contrôles. De ceux-ci sont cachés. Il y a 3 boutons sur ma page. Sur le clic du premier bouton je montre les contrôles cachés (radiobutton et liste déroulante). Tous ces champs sont obligatoires. Lorsque l'utilisateur clique sur l'autre bouton qui est le bouton de soumission, tous les champs requis apparaissent très bien. Le troisième bouton est utilisé pour basculer entre une vue différente qui a ses propres contrôles.

Mon problème est lorsque l'utilisateur soumet le formulaire en utilisant le second bouton et si les champs ne sont pas remplis, il affiche le message de champ requis très bien. À ce stade, lorsque je clique sur le 3ème bouton pour basculer vers une vue différente, puis revenir à ma vue, les messages d'erreur sont toujours là. Je ne suis pas en mesure d'effacer ces messages d'erreur. Voir ci-dessous le bouton radio que j'ai:

<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> 

J'utilise KO et sur le bouton clic du troisième bouton où je bascule j'essaie d'utiliser le code ci-dessous pour effacer et remettre le formulaire, mais ça ne marche pas.

 var validator = $("form").validate(); 
     validator.resetForm(); 

Une autre chose est tout en soumettant la forme que je suis en utilisant le code suivant pour forcer la validation que ces contrôles sont d'abord cachés:

 $("form").removeData("validator"); 
     $("form").removeData("unobtrusiveValidation"); 
     $.validator.unobtrusive.parse($("form")); 

Enfin, je peux voir la durée suivante qui est générée dans le 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> 

Répondre

0

Vous pouvez utiliser le code suivant pour effacer les erreurs:

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

Ceci a été pris de: How to clear jquery validate errors