Ein Ereignis auslösen, wenn Fehler bei der Validierung?
Ich hinzufügen müssen, um ein handle auf alle Umstände, wo eine Validierung fehlschlägt.
Habe ich gelesen diese, das erklärt, dass ich, um einen Ereignishandler hinzuzufügen, wie folgt:
$('form').bind('invalid-form.validate', function () {
console.log('form is invalid!');
});
Aber dieses Ereignis wird nur ausgelöst, wenn ich versuche, das Formular zu senden.
Brauche ich, um ein Ereignis zu behandeln, die ausgelöst wird, jederzeit die form ist ein post-validiert (d.h. ein element verliert den Fokus, etc.).
Was ich versuche zu erreichen ist, ich habe eine große form (~50 Felder), und es ist gesplittet in Bootstrap tabs.
Ich will, dass, wenn es eine neue Validierung scheitern oder Erfolg, setzen oder löschen Sie eine error-Klasse in der Registerkarte Titel der Registerkarte, die enthält die ungültige/gültige Elemente. P. S. meine Frage ist nicht, wie man diese Klassen in den Registerkarten. Ich will nur wissen, welche Veranstaltung(en) zu behandeln, um benachrichtigt zu werden, bei jeder Validierung Zustand zu ändern, in der gesamten form.
- Es gibt keine solche Veranstaltung zur Verfügung gestellt von jQuery oder das Validate plugin. Haben Sie zum anfügen einer
focusout
,blur
,keyup
usw zu jedem input-element, und verwenden Sie die.valid()
Methode, um das Formular zu testen. - gibt es ein Ereignis, wie
onvalidated
zur Verfügung gestellt von der unaufdringlichen validation plugin? - Ich bin nicht sehr vertraut mit der
unobtrusive
plugin überhaupt. Aber in all den tausenden von jQuery Validate Fragen, die ich gesehen habe, habe ich noch nie gesehen beliebige benutzerdefinierte Ereignisse beschrieben. - Was genau wollen Sie tun? Warum kannst du nicht nur eines der built-in-Optionen?
- mit unaufdringlich-Validierung, die Sie nicht nennen
validate
überhaupt. Er setzt alles für Sie. Jedenfalls habe ich aktualisiert meine Frage mit dem Zweck, meine Anforderung. - Ja, das verstehe ich. Allerdings können Sie mit
setDefaults()
zu bekommen, um die Unfähigkeit zu rufen.validate()
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, das ist ein bisschen anders als das, was Sie ursprünglich gefragt haben. (Ignorieren die erste Hälfte meiner Antwort.)
Verwenden Sie die
highlight
undunhighlight
Optionen zusammen mit jQuery-DOM-traversal-set und unset jede Klasse im DOM, die Sie wünschen.highlight
feuert, wenn etwas ist ungültig undunhighlight
feuert, wenn es gültig wird. Sehen diese Antwort als Beispiel.Verwenden die
.setDefaults()
Methode Sie diese Optionen, da Sie mit derunobtrusive-validation
plugin und haben keinen direkten Zugriff auf die.validate()
Methode.highlight
undunhighlight
ist in der Tat das, was ich Suche. Jedenfalls Kann ich rufen Sie die original -highlight
Funktion die highlight-Funktion bin ich bei der Einrichtung? Hier'wieder die ursprüngliche Funktion, muss ich kopieren und einfügen es in meinem override-script oder es besteht irgendwo?invalidHandler
feuert auf eine ungültige form.invalid-form.validate
event, die unaufdringlich validation-Ereignis, das ausgelöst wird, aus der unter der Haube jqueryinvalidHandler
. Leider habe ich etwas verpasst in der Funktion, die es nicht zu funktionieren. Sollte ich nicht diese Frage gestellt und verschwendet Ihre Zeit. Jedenfalls, deine Antwort hat mich gelehrt, eine Menge, wie die jquery-Validierung funktioniert.submit
wenn jeder Teil der form ungültig ist.submitHandler
nur feuert auf diesubmit
wenn das ganze Formular gültig ist.highlight/unhighlight
Feuer auf einer Feld-für-Feld-basis wie jede ungültig/gültig. Die.valid()
Methode kann aufgerufen werden, programmgesteuert zu testen, einen einzelnen Bereich oder das gesamte Formular. Das ist es. Ich weiß wirklich nicht, was anderes zu sagen.disabled
.ignore: []
ermöglichen Validierung für ausgeblendete Felder.ignore: ':disabled'
. Ich hoffe, es ist gonna Arbeit.:disabled
, dann es geht zu ignorieren, die Felder deaktiviert. Wenn Sie sagen, es zu ignorieren, nichts,[]
, dann wird es ignorieren nichts und überprüfen alles.:hidden
Felder, aber nicht:disabled
lieben.ignore ':disabled'
dürfte.disabled
Felder werden immer ignoriert, egal was... es ist hart codiert, um die bypass -ignore
option vollständig. Soignore: ':disabled'
ist genauso effektiv wie dieignore: []
. Siehe: jsfiddle.net/amy4svenignore: ':disabled'
und das Ereignis nicht Feuer überhaupt. Ich werde versuchen, anstelle mit einem leeren array.:disabled
ist ein Gültiger Selektor. Seit skipping deaktiviert Feldern ist bereits in der pluginignore: []
ist der beste Weg zu gehen.ignore: "input[type='hidden'],fieldset[disabled] *"
.