Le déclenchement d'un événement si il y a des erreurs de validation?
J'ai besoin d'ajouter une poignée à toutes les circonstances où une forme de validation échoue.
J'ai lu cette, qui explique que je dois ajouter un gestionnaire comme suit:
$('form').bind('invalid-form.validate', function () {
console.log('form is invalid!');
});
Mais cet événement se déclenche uniquement lorsque j'essaie d'envoyer le formulaire.
J'ai besoin de gérer un événement est déclenché TOUTES les fois que le formulaire est en post-validé (c'est à dire l'élément perd le focus, etc.).
Ce que je suis en train de réaliser est, j'ai une grande forme (~50 champs), et il est divisé en Bootstrap onglets.
Je veux, que lorsqu'il y a toute une nouvelle validation de l'échec ou de la réussite, de définir ou effacer une erreur de classe dans le titre de l'onglet de l'onglet qui contient l'invalide/éléments valides. P. S. ma question n'est pas sur la façon de définir ces classes dans les onglets. Je veux seulement savoir de quel événement(s) pour manipuler afin d'être notifié lors de chaque validation de changement d'état dans l'ensemble du formulaire.
- Il n'existe pas d'événement prévu par jQuery ou de la validation de plugin. Vous devrez joindre une
focusout
,blur
,keyup
, etc pour chaque élément d'entrée et utilisez les.valid()
méthode pour tester la la forme. - est-il un événement tel que
onvalidated
fourni par le discret validation plugin? - Je ne suis pas très familier avec la
unobtrusive
plugin à tous. Cependant, dans tous les milliers de jQuery Valider les questions que j'ai vu, je n'ai jamais vu tous les événements décrits. - Qu'est-ce exactement que vous essayez de faire? Pourquoi tu ne peux pas utiliser les l'une des options intégrées?
- avec discrète de validation vous n'appelez pas
validate
à tous. Il définit tout pour vous. De toute façon j'ai mis à jour ma question avec le but de mon exigence. - Oui, je le comprends. Toutefois, vous pouvez utiliser
setDefaults()
de contourner l'incapacité d'appeler.validate()
.
Vous devez vous connecter pour publier un commentaire.
Bien, c'est un peu différent de ce que vous demandiez. (Ignorer la première moitié de ma réponse.)
Utiliser le
highlight
etunhighlight
options avec jQuery DOM traversée de définir et d'annuler toute classe dans les DOM vous le souhaitez.highlight
se déclenche lorsque quelque chose n'est pas valide etunhighlight
feux quand il devient valide. Voir cette réponse comme un exemple.Utilisation le
.setDefaults()
méthode pour définir ces options depuis que vous utilisez leunobtrusive-validation
plugin, et n'ont pas d'accès direct à la.validate()
méthode.highlight
etunhighlight
est en effet ce que je recherche. De toute façon, je Peux appeler l'originalhighlight
fonction à partir de la fonction highlight, je suis la mise en place? Ici're de la fonction d'origine, dois-je les copier et les coller dans mon remplacer script ou il existe n'importe où?invalidHandler
feux sur un formulaire non valide.invalid-form.validate
événement, qui est le discret validation de l'événement qui est déclenché à sortir du sous le capot jqueryinvalidHandler
. Malheureusement j'ai raté quelque chose dans la fonction que le fait de ne pas travailler. Je devrais n'ai pas posé cette question et à un gaspillage de votre temps. De toute façon, votre réponse m'a beaucoup appris sur la façon jquery de validation des travaux.submit
si une partie quelconque de la forme n'est pas valide.submitHandler
seulement les feux sur lasubmit
si le formulaire est valide.highlight/unhighlight
le feu sur un champ par champ, comme chacun devient invalide valide. Le.valid()
méthode peut être appelée par programme pour les essais sur un seul champ ou de la totalité du formulaire. C'est tout. Je ne sais vraiment pas quoi d'autre à vous dire.disabled
.ignore: []
permettra de validation sur des champs cachés.ignore: ':disabled'
. J'espère que ça va marcher.:disabled
, alors il va ignorer les personnes handicapées les champs. Si vous dites qu'il ignore rien,[]
, puis il ignore rien et valider le tout.:hidden
de champs, mais pas:disabled
ceux.ignore ':disabled'
doit probablement travailler.disabled
les champs sont toujours va être ignoré n'importe quoi... c'est codé en dur à contourner leignore
option entièrement. Doncignore: ':disabled'
est effectivement la même queignore: []
. Voir: jsfiddle.net/amy4svenignore: ':disabled'
et l'événement n'a pas le feu à tous. Je vais essayer de le remplacer avec un tableau vide.:disabled
est valide d'un sélecteur. Depuis sauter désactivé champs est déjà intégré dans le plugin,ignore: []
est la meilleure façon d'aller.ignore: "input[type='hidden'],fieldset[disabled] *"
.