Öffnen Akkordeon-panel auf Fehler bei der überprüfung
Ich bin mit jQuery-accordion-split meine Formulare in mehreren panels und jQquery überprüfung überprüfen Sie die erforderlichen Felder aus. Es funktioniert großartig und zeigt Fehler in validierten Felder so lange, wie Sie in den öffnen-Dialog.
Beispiel. Sagen wir, ich habe Baum Akkordeon-panels und auf den ersten habe ich zwei Formularfelder validiert werden. Nun, wenn der Besucher switch panel von zwei oder drei und bezwingend das Formular ohne ausfüllen der erforderlichen Felder auf dem Bedienfeld, möchte ich die erste Akkordeon-panel zu öffnen, und zeigen Sie den Fehler.
Weiß jemand einen Weg, diese Arbeit zu machen?
Dies ist der code, den ich verwende heute:
$(document).ready(function() {
$("#accordion").accordion({
autoHeight: false,
navigation: true,
});
$("#validate_form").validate({
rules: {
page_title: "required",
seo_url: "required",
AccordionField: {
required: true
}
},
ignore: [],
messages: {
page_title: "Please enter a page title",
seo_url: "Please enter a valid name"
}
});
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösen das konkrete problem in deiner Frage ist, das Sie nur noch ein invalidHandler callback-Funktion aufruft, die aktivieren() - Methode der accordion-widget zu öffnen, der erste Bereich:
Sagte, Umgang mit dem Allgemeinen Fall (ungültige Elemente auf einen beliebigen Bereich) und wechseln in den entsprechenden Bereich wäre wohl besser sein. Um das zu tun, wir haben zu Holen die ersten ungültiges element aus der
invalidHandler
Rückruf. Wir können mit dererrorClass
verwendet der validation engine (error
standardmäßig), aber wir können nicht blind entsprechen, weil diese Klasse wird auch angewendet, um die Fehlermeldung labels. Die Einschränkung der Ergebnisse mit einer :input Selektor wird uns hier helfen.Von dort aus können wir am nächsten() entsprechend der Vorfahren Akkordeon-Bereich, und index() Erhalt der index in relation zu den anderen Bereichen, das führt uns zu dem folgenden code:
Update: Wir auch zu nennen
showErrors()
explizit in unsererinvalidHandler
, da diese Funktion ist verantwortlich für die Dekoration der ungültigen Elementen mit dererror
Klasse in den ersten Platz, aber in der Regel nur genannt danach. (Quelle: http://forum.jquery.com/topic/jquery-validate-invalidhandler-is-called-before-the-errors-are-shown-maybe-better-vice-versa.)showErrors()
soll dieses Problem beheben. Hast du mein update?Die API hat sich etwas verändert, hier ist ein Beispiel, basierend auf der ausgewählten Antwort für jedermann in der Zukunft. Hinweis: die
ignore
die benötigt wird, um zu verhindern, dass die versteckten Felder in einem Akkordeon wird übersehen durch den validator.$("#accordion").accordion("activate", index);
zu$(".accordion").accordion("option", "active", index);
mit index gleich 0 für das erste Element im Akkordeon.Für diejenigen, die Verwendung von MVC, die invalidHandler für Sie erstellt.
Als ich versuchte überschreiben (von https://github.com/jzaefferer/jquery-validation/issues/765)
Form immer Unterwerfen werde.
Meine Lösung ist, ziehen Sie die Funktion und rufen Sie es, wenn der submit geklickt wird.
Ich hatte auch ziehen Sie das ignorieren=[]