J'utilise le plugin de validation jQuery pour la validation côté client. La fonction editUser()
est appelée en cliquant sur le bouton «Modifier l'utilisateur», qui affiche des messages d'erreur.
Mais je veux effacer les messages d'erreur sur mon formulaire, lorsque je clique sur le bouton «Effacer», 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
}
}
jquery
jquery-validate
Vicky
la source
la source
resetForm()
ne supprime pas toutes les instances de.error
sur les éléments enfants du formulaire. Cela laissera du CSS résiduel comme la couleur du texte rouge à moins que vous n'appeliez.removeClass()
. Exemple:$('#myform .control-group').removeClass('error');
Je suis tombé sur ce problème moi-même. J'ai eu le besoin de valider conditionnellement des parties d'un formulaire pendant que le formulaire était en cours de construction en fonction des étapes (c'est-à-dire que certaines entrées étaient ajoutées dynamiquement pendant l'exécution). En conséquence, une liste déroulante de sélection nécessiterait parfois une validation, et parfois non. Cependant, à la fin de l'épreuve, il fallait le valider. En conséquence, j'avais besoin d'une méthode robuste qui n'était pas une solution de contournement. J'ai consulté le code source pour
jquery.validate
.Voici ce que j'ai trouvé:
Voici à quoi cela ressemble dans le code:
minifié en tant qu'extension jQuery:
la source
showErrors
fait une manipulation DOM et il est appelé pour chaque élément du formulaire. Le navigateur s'est figé pendant quelques secondes lors de l'utilisation de ce code sur un formulaire avec ~ 30 contrôles. La solution pour moi était deshowErrors
sortir de la boucle et de l'appeler une fois juste avantvalidator.resetForm
. Pour autant que je sache, il se comporte exactement de la même manière et est beaucoup plus rapide.Si vous souhaitez simplement masquer les erreurs:
Si vous avez spécifié le
errorClass
, appelez cette classe à la placeerror
(par défaut) que j'ai utilisée ci-dessus.la source
$(".has-error").removeClass("has-error");
Si vous n'avez pas précédemment enregistré les validateurs séparément lorsque vous les attachez au formulaire, vous pouvez également simplement appeler
comme
.validate()
renverra les mêmes validateurs que vous avez attachés précédemment (si vous l'avez fait).la source
Si vous souhaitez le faire sans utiliser de variable distincte,
la source
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 devrait ignorer le «Soumettre». Aucune erreur. C'est assez simple. Si quelqu'un insère un ensemble partiel de valeurs et clique sur «Soumettre», il doit signaler certains champs avec des erreurs. Si, cependant, ils effacent ces valeurs et cliquent à nouveau sur «Soumettre», cela devrait effacer les erreurs. Dans ce cas, pour une raison quelconque, il n'y a aucun élément dans le tableau "currentElements" dans le validateur, donc l'exécution
.resetForm()
ne fait absolument rien.Il y a des bugs postés à ce sujet.
Jusqu'à ce qu'ils les réparent, vous devez utiliser la réponse de Nick Craver, PAS la réponse acceptée de Parrots.
la source
Vous pouvez utiliser:
la source
Je pense qu'il faut juste entrer les entrées pour tout nettoyer
la source
Si vous voulez simplement effacer les étiquettes de validation, vous pouvez utiliser le code de jquery.validate.js resetForm ()
la source
Pour ceux qui utilisent Bootstrap 3, le code ci-dessous nettoiera tout le formulaire: messages, icônes et couleurs ...
la source
J'ai testé avec:
Ce sera ok, lorsque vous aurez besoin de le valider à nouveau.
la source
Cela détruira toutes les erreurs de validation
la source
Dans mon cas, aidé à l'approche:
la source
Si vous souhaitez masquer une validation côté client qui ne fait pas partie d'une soumission de formulaire, vous pouvez utiliser le code suivant:
la source
J'ai essayé chaque réponse. La seule chose qui a fonctionné pour moi était:
En utilisant:
la source
Aucune des autres solutions n'a fonctionné pour moi.
resetForm()
est clairement documenté pour réinitialiser le formulaire réel, par exemple supprimer les données du formulaire, ce qui n'est pas ce que je veux. Il arrive juste parfois de ne pas faire cela, mais simplement de supprimer les erreurs. Ce qui a finalement fonctionné pour moi, c'est ceci:la source
Essayez de l'utiliser pour supprimer la validation en cliquant sur Annuler
la source
Essayez d'utiliser:
sur le bouton Effacer.
la source
Pour supprimer le résumé de validation, vous pouvez écrire ceci
$('div#errorMessage').remove();
Cependant, une fois que vous avez supprimé, encore une fois si la validation a échoué, il n'affichera pas ce résumé de validation car vous l'avez supprimé. Utilisez plutôt masquer et afficher en utilisant le code ci-dessous
la source
Aucune des solutions ci-dessus n'a fonctionné pour moi. J'ai été déçu de perdre mon temps avec eux. Cependant, il existe une solution simple.
La solution a été obtenue en comparant le balisage HTML pour l'état valide et le balisage HTML pour l'état d'erreur.
Aucune erreur ne produirait:
lorsqu'une erreur se produit, ce div est rempli avec les erreurs et la classe est modifiée en validation-summary-errors:
La solution est très simple. Effacez le code HTML du div qui contient les erreurs, puis remettez la classe à l'état valide.
Bon codage.
la source
Si vous souhaitez également réinitialiser,
numberOfInvalids()
ajoutez la ligne suivante dans laresetForm
fonction dansjquery.validate.js
le numéro de ligne du fichier: 415.la source
je viens de faire
$('.input-validation-error').removeClass('input-validation-error');
pour supprimer la bordure rouge sur les champs d'erreur de saisie.
la source
$(FORM_ID).validate().resetForm();
ne fonctionne toujours pas comme prévu.Je nettoie le formulaire avec
resetForm()
. Cela fonctionne dans tous les cas sauf un !!Lorsque je charge un formulaire via Ajax et que j'applique la validation du formulaire après le chargement de ma dynamique
HTML
, puis après quand j'essaye de réinitialiser le formulaire avecresetForm()
et cela échoue et cela a également vidé toute validation que j'applique sur les éléments du formulaire.Alors veuillez ne pas l'utiliser pour les formulaires chargés Ajax OU la validation initialisée manuellement.
PS Vous devez utiliser la réponse de Nick Craver pour un tel scénario comme je l'ai expliqué.
la source
validator.resetForm()
texte d'erreur clair de la méthode. Mais si vous souhaitez supprimer la bordure ROUGE des champs, vous devez supprimer la classehas-error
la source
Fonction utilisant les approches de Travis J , JLewkovich et Nick Craver ...
la source
Écrivez votre propre code car tout le monde utilise un nom de classe différent. Je réinitialise la validation jQuery par ce code.
la source