Jquery Valider resetForm n'efface pas les messages d'erreur

Je suis à l'aide d'onglets pour naviguer entre les formes et lorsque l'utilisateur appuie sur le bouton suivant, la validation d'un formulaire. Si il y a des erreurs, il affiche le résumé des erreurs dans le haut, et aussi des erreurs individuelles à chacun des champs. L'utilisateur corrige les erreurs, et appuie sur le bouton Suivant pour passer à l'onglet suivant. Lorsque le appuyez sur le bouton précédent, les messages d'erreur ne sont pas effacées.

Comment pourrais-je effacer le message d'erreur contenant en haut et les messages d'erreur à chacun des champs de formulaire à condition que le formulaire est valide en appuyant sur le bouton suivant. J'ai essayé le resetForm(), mais cela ne fonctionne pas.

Voici mon code

<form class="wizardTab" id="graph-data">        
  <div class="alert alert-error" id="alert-form-graph-data"></div>
  <div class="row required" id="frmgraphdata">            
    <fieldset>                 
      <legend>Select below</legend>                   
      <div class="inputgroup" id="select_graph_data">                  
        <label for="graph-only">              
          <input class="required" id="graph-only" name="select_graph_or_data" required="required" type="radio" value="graph-only"/>Graph             
        </label>                   
        <label for="data-only">              
          <input class="required" id="data-only" name="select_graph_or_data" required="required" type="radio" value="data-only"/>Data              
        </label>                            
      </div>            
    </fieldset>      
  </div>                   
  <div class="row buttons">                        
    <input class="btnNext" id="q0_btn_next" type="button" value="Next &gt;"/>                   
  </div>             
</form>  

Jquery code:

    $('#q0_btn_next').click(function (e) {
e.preventDefault();
var formID = $(this).closest('form').attr('id');
var form = $('#'+ formID);
if (form.valid()){
//code to goto the next tab             
//clear error message
form.validate().resetForm();
}
});
$('.wizardTab').each(function(){
$(this).validate({
onkeyup: false,
onclick: false,
onfocusout: false,
validClass: "success",
errorClass: "error",
rules: {
'select_graph_or_data': {
required: true
}
//more rules for other forms
},
invalidHandler: function(form, validator) {
if (!validator.numberOfInvalids())
return;
/*$('html, body').animate({
scrollTop: $(validator.errorList[0].element).offset().top
}, 500);*/
},
errorPlacement: function (error, element) {
if (element.parents('.inputgroup').length) {
error.insertBefore(element.parents('.inputgroup'));
element.parents('.inputgroup').addClass('error');
} else {
error.insertBefore(element);
};                     
},
showErrors: function (errorMap, errorList, currentForm) {
errors = this.numberOfInvalids();
var formID = this.currentForm.attributes.id.nodeValue;
var alrt = $('#alert-form-'+ formID);
if (errors > 0){
this.defaultShowErrors();
var msg = '<p>Your form has errors:</p><ul>'; 
$.each(errorMap, function(key, value) {
msg += '<li><a href="#' + key + '-row" class="error">' + value + '</a></li>';
});
msg += '</ul>';                     
//Show the error in the error summary container
$('#alert-form-' + formID).html(msg).show();
$(alrt).html(msg).show();
$('html, body').animate({ scrollTop: $(alrt).offset().top - 20}, 500);
}
}    
});
}); 
Avez-vous écrit ce code ou de le copier à partir de quelque part? Je demande parce que le code nécessaire pour résoudre ce n'est pas plus compliqué que le code déjà en place. BTW, tu parles d'un bouton "précédent" pourtant, il n'est pas indiqué dans votre balisage HTML.
J'ai écrit le code, mais je ne l'ai copié dans son intégralité. Je peux ajouter le bouton précédent
resetForm() est un jQuery Valider la méthode utilisée uniquement pour rétablir la valeur par défaut des messages d'erreur sur la forme. (Met le formulaire de retour à l'endroit où il a commencé.) Toutefois, si vous avez placé d'erreur personnalisé résumés, vous aurez à les obtenir par vous-même. En plus de la resetForm(), il suffit de retirer le contenu de votre résumé de la boîte. Pas vraiment sûr de savoir comment ou pourquoi vous êtes coincé ici.
J'ai caché le résumé conteneur et qui semble avoir de travail. Donc, savez-vous pourquoi la resetForm n'est pas de supprimer la surbrillance d'erreur et message d'erreur au niveau du terrain?
Normalement, resetForm() devrait être la suppression de la valeur par défaut label éléments contenant les messages d'erreur. Cependant, votre formID variable que représente l'ID de la forme il n'est donc pas une bonne sélection. Depuis votre form variable représente le bon sélecteur, $('#'+ formID), vous aurez besoin d'utiliser form.validate().resetForm() plutôt que formID.validate().resetForm() Voir la documentation: jqueryvalidation.org/Validator.resetForm

OriginalL'auteur Moxie C | 2014-06-03