Comment effacer jQuery de validation des messages d'erreur?
Je suis en utilisant le plugin jQuery validation pour la validation côté client.
Fonction editUser()
est appelée lors du clic sur "Modifier l'Utilisateur" bouton, qui affiche des messages d'erreur.
Mais je veux effacer les messages d'erreur sur mon formulaire, lorsque je clique sur le bouton "Clear", qui appelle une fonction distincte clearUser()
.
function clearUser() {
//Need to clear previous errors here
}
function editUser(){
var validator = $("#editUserForm").validate({
rules: {
userName: "required"
},
errorElement: "span",
messages: {
userName: errorMessages.E2
}
});
if(validator.form()){
//Form submission code
}
}
Vous devez vous connecter pour publier un commentaire.
Vous voulez le
resetForm()
méthode:J'ai saisi à partir de la source de l'une de leurs démos.
Note: Ce code ne fonctionne pas pour Bootstrap 3.
resetForm()
ne pas effacer toutes les instances de.error
sur les éléments enfants de la forme. Cela laissera résiduelle CSS comme le rouge la couleur du texte, à moins que vous appelez.removeClass()
. Exemple:$('#myform .control-group').removeClass('error');
Je suis tombé sur cette question de moi-même. J'ai eu la nécessité conditionnelle, la validation des pièces de forme, tandis que le formulaire a été construit selon les étapes (c'est à dire certaines entrées ont été ajouté dynamiquement lors de l'exécution). En conséquence, parfois sélectionnez le menu déroulant aurait besoin de validation, et parfois il ne le serait pas. Cependant, à la fin de l'épreuve, il a besoin d'être validé. En conséquence, j'ai besoin d'une méthode robuste qui n'a pas été une solution de contournement. J'ai consulté le code source pour
jquery.validate
.Voici ce que je suis venu avec:
Voici à quoi il ressemble dans le code:
minimisé comme une extension jQuery:
showErrors
fait un peu de manipulation du DOM et elle est appelée pour chaque élément dans le formulaire. Le navigateur a gelé pour un couple de secondes lors de l'utilisation de ce code dans un formulaire avec ~ 30 contrôles. La solution pour moi a été de déplacershowErrors
de la boucle et viens de l'appeler une fois juste avant devalidator.resetForm
. Aussi loin que je peux dire, il se comporte exactement de la même manière et est beaucoup plus rapide.Si vous voulez tout simplement cacher les erreurs:
Si vous avez spécifié le
errorClass
, appeler cette classe, pour cacher au lieuerror
(valeur par défaut), j'ai utilisé ci-dessus.numberOfInvalids()
$(".has-error").removeClass("has-error");
Si vous ne l'avez pas déjà enregistrer les validateurs d'autre part de les attacher à la forme, vous pouvez aussi tout simplement appeler
comme
.validate()
sera de retour le même validateurs vous fixé précédemment (si vous l'avez fait).Si vous voulez le faire sans l'aide d'une variable séparée puis
Malheureusement,
validator.resetForm()
ne fonctionne PAS, dans de nombreux cas.J'ai un cas où, si quelqu'un frappe le "Soumettre" sur un formulaire avec des valeurs vides, il doit ignorer les "Soumettre". Pas d'erreurs. C'est assez facile. Si quelqu'un met dans un ensemble partiel de valeurs, et hits "se Soumettre", il doit signaler, certains des champs avec des erreurs. Si, toutefois, ils effacer les valeurs et cliquez sur "envoyer" de nouveau, il convient de supprimer les erreurs. Dans ce cas, pour une raison quelconque, il n'y a pas d'éléments dans le "currentElements" tableau dans le programme de validation, de sorte que l'exécution de
.resetForm()
ne fait absolument rien.Il y a des bugs posté sur ce.
Jusqu'à ce qu'ils fixent eux, vous devez utiliser Nick Craver de réponse, PAS de Perroquets accepté de répondre.
Vous pouvez utiliser:
Si vous voulez juste de validation des étiquettes, vous pouvez utiliser le code de jquery.validate.js resetForm()
Je pense que nous avons juste besoin de saisir les entrées de nettoyer tout
Pour ceux utilisant Bootstrap 3 code ci-dessous permettra de nettoyer toute la forme des messages: les messages, les icônes et les couleurs...
J'ai testé avec:
Il sera ok, quand vous avez besoin de valider de nouveau.
Cela va détruire toutes les erreurs de validation
Aucune des autres solutions n'a fonctionné pour moi.
resetForm()
est clairement documenté pour réinitialiser le formulaire, par exemple, de supprimer les données de la forme, qui n'est pas ce que je veux. Il arrive juste à parfois ne pas le faire, mais seulement de supprimer les erreurs. Ce qui a finalement fonctionné pour moi est: est-ceEssayer de l'utiliser pour retirer de validation sur le cliquez sur annuler
Essayez d'utiliser:
sur le bouton Effacer.
Pour supprimer le récapitulatif de la validation, vous pouvez écrire ce
$('div#errorMessage').remove();
Cependant, une fois que vous avez supprimé , à nouveau si la validation a échoué, il ne montre pas de ce résumé de validation
parce que vous l'avez supprimé. Au lieu d'utiliser l'option masquer et afficher à l'aide du code ci-dessous
Aucune des deux solutions n'a fonctionné pour moi. J'ai été déçu de perdre mon temps sur eux. Cependant, il existe une solution facile.
La solution a été obtenue en comparant les balises HTML pour l'état valide HTML et marque pour l'état d'erreur.
Aucune erreur serait de produire:
lorsqu'une erreur se produit cette div est remplie avec les erreurs et la classe est modifiée à la validation-résumé-erreurs:
La solution est très simple. Clair dans le code HTML de la div qui contient les erreurs, puis de changer la classe à l'état valide.
Heureux de codage.
Si vous souhaitez réinitialiser
numberOfInvalids()
ainsi, puis ajoutez la ligne suivante dansresetForm
fonction dansjquery.validate.js
fichier numéro de ligne: 415.J'ai juste fait
$('.input-validation-error').removeClass('input-validation-error');
pour enlever la bordure rouge sur l'erreur de saisie des champs.
$(FORM_ID).validate().resetForm();
ne fonctionne toujours pas comme prévu.Je suis de compensation formulaire avec
resetForm()
. Il fonctionne dans tous les cas sauf un!!Lorsque je charge toute forme via Ajax et appliquer de la validation du formulaire, après le chargement de ma dynamique
HTML
, puis après quand j'ai essayer de réinitialiser le formulaire avecresetForm()
et il échoue, et aussi il vidées tous les hors de validation que je m'applique sur les éléments de formulaire.Donc veuillez ne pas l'utiliser pour l'Ajax formes de chargement OU manuellement initialisé validation.
P. S. Vous devez utiliser Nick Craver de réponse pour un tel scénario, comme je l'ai expliqué.
Dans mon cas, a contribué à l'approche:
Si vous voulez cacher une validation côté client qui ne fait pas partie de la soumission d'un formulaire, vous pouvez utiliser le code suivant:
validator.resetForm()
méthode clair le texte de l'erreur. Mais si vous souhaitez supprimer la bordure ROUGE de champs, vous devez supprimer la classehas-error
Essayé tous seule réponse. La seule chose qui a fonctionné pour moi a été:
À l'aide de:
De la fonction en utilisant les approches de Travis J, JLewkovich et Nick Craver...