JQuery Akkordeon - click-Ereignis lösen

8

Ich schreibe einen Formularassistenten mit dem Akkordeonmodul von JQuery. Das Problem ist, dass ich alle Mausklicks im Akkordeonmenü außer Kraft setzen möchte, damit das Formular validiert wird, bevor das Akkordeon den nächsten Abschnitt anzeigt.

Ich habe Folgendes versucht:

%Vor%

Aber der obige Code funktioniert nicht. Das integrierte Klickereignis des Akkordeons wird immer noch aufgerufen und das Akkordeon zeigt den nächsten Abschnitt an, unabhängig davon, ob das Formular gültig ist oder nicht.

Ich habe auch den folgenden Code ausprobiert:

%Vor%

Aber der Aufruf von stopPropagation () scheint das Akkordeon-Verhalten überhaupt nicht zu beeinflussen, der nächste Abschnitt wird angezeigt, ob das Formular gültig ist oder nicht.

Irgendeine Idee, was ich falsch machen könnte?

Danke!

    
Stinky Tofu 25.11.2009, 03:58
quelle

4 Antworten

13

Okay, ich habe eine Pause von der Programmierung dieser Funktion genommen und bin mit einem frischen Augenpaar dazu zurückgekehrt. Hier ist die Lösung:

%Vor%

Das Hinzufügen eines Ereignisses: false zum Akkordeon-Initialisierungscode verhindert, dass Mausklicks auf das Akkordeonmenü die Standardaktion ausführen, und dann kann ich benutzerdefinierten Klickhandhabungscode schreiben, um die validate () -Funktion auszuführen, wenn der Benutzer auf das Menü klickt und im Wesentlichen überschreibt Die integrierte Klickfunktion des Akkordeons, wenn das Formular die Validierungsprüfung nicht besteht.

Übrigens, ich benutze hier das Akkordeon-Modul von JQuery UI.

Funktioniert mit ie7,8, chrome 19, ff 3.0.3

    
Stinky Tofu 27.11.2009, 12:29
quelle
0

event.stopPropogation() verhindert nicht, dass weitere Ereignishandler, die beim Aufruf des Ereignisziels registriert sind, aufgerufen werden, und verhindert, dass das Ereignis das DOM sprudelt, wenn event.bubbles wahr ist. Sie könnten versuchen, dass der Event-Handler false oder event.preventDefault() zurückgibt, siehe hier oder hier für weitere Informationen.

    
Ryan Lynch 25.11.2009 04:12
quelle
0

Nach dem Quellcode zu urteilen, ist das Ereignis nicht an die h3s gebunden, sondern an den umgebenden Container (das Plugin verwendet die Ereignisdelegierung). Außerdem ist der Handler nicht an click , sondern an click.ui-accordion gebunden. Also versuche es:

%Vor%

Und nur für das Protokoll: Es gibt keine solche Sache (zumindest noch nicht) als "JQuerys Akkordeon-Modul". Es gibt nur einige Akkordeon-Plugins für JQuery.

    
Tom Bartel 25.11.2009 04:17
quelle
0

Sie müssen den folgenden Code zusammen am unteren Rand der Ready-Funktion schreiben:

%Vor%     
Ashwin Chetri 28.06.2010 13:05
quelle