Kombination von Ajax und Javascript

am 15.06.2013 - 11:01 Uhr in
Mit dem Modul improved_multi_select kann man eine normale Auswahlliste (Select-Formularfeld) dahingehend verändern, dass links aus der Werteliste einzelne Werte ausgewählt werden können, die dann in eine neue Werteliste nach rechts übernommen werden. Die Werte der neuen Liste (also die ausgewählten Werte) können dann zusätzlich sortiert werden.
Das ganze beruht auf Javascript und funktioniert für sich alleine sehr gut.
Nun habe ich mit einem weiteren eigenen Modul diese Auswahlliste von einer anderen Auswahlliste abhängig gemacht (Ajax-wrapper). Auch das funktioniert für sich alleine einwandfrei.
Nur die Kombination beider Module führt dazu, dass die Sortierfunktionen (move_up und move_down - siehe Zeilen 209 und 221 in der Datei improved_multi_select.js) zum verschieben der Werte in der rechten Liste immer zweimal ausgeführt werden. Die Werte werden also immer um zwei Positionen, statt um eine Position verschoben.
Ich vermute, dass der Aufruf der Ajax-Funktion bewirkt, dass die JS-Funktionen erneut zum zweiten Mal initialisiert werden.
Ich habe keine Ahnung, wie man das unterbinden kann.
Auf drupal.org konnte mir bisher keiner helfen.
Vielleicht hat hier jemand schon dieses Problem gehabt und beheben können.
- Anmelden oder Registrieren um Kommentare zu schreiben
Schade, bisher leider keine
am 20.06.2013 - 10:25 Uhr
Schade, bisher leider keine Reaktion.
Vielleicht auch nicht gut genug erklärt ?
Ich habe ein paar Screenshots und die js-Datei angehängt, damit das Problem klarer wird.
Hallo Micha, wie gibst du die
am 20.06.2013 - 10:47 Uhr
Hallo Micha,
wie gibst du die Box auf der Site aus, mit Views?
Ich habe ein ähnliches Problem gehabt und zwar den jQuery Schieberegler ( Größe von bis) eingebaut in die Detailsuche, dieser funktionierte zwar, aber bei der Auswahl weiterer Suchkriterien per Checkbox erzeugte sich der Regler jedesmal neu, also 3 Checkfelder = 3 Schieberegler.
Nach langem Suchen habe ich dann gesehen das ich in der View für Detailsuche: "AJAX verwenden: Ja" aktiviert hatte, auf nein gesetzt und jetzt funktioniert es.
Irgendwo kommt sich js mit Ajax in die Quere, schau doch mal ob du irgendwo ein Ajax deaktivieren kannst, bzw. eine View anlegen und mit Ajax Nein testen, also das improved multi select per Views ausgeben.
Wäre jetzt nur ein Versuch, hast du mal unter Berichte/ Aktuelle Protokollnachrichten gekuckt ob dir genauere Fehlermeldungen angezeigt werden?
Viele Grüße Jenna
Also Views ist überhaupt
am 20.06.2013 - 11:29 Uhr
Also Views ist überhaupt nicht beteiligt.
Das Feld MeldeSpieler (ein Entity Reference Feld) wird durch eine Select-Abfrage in meinem Modul befüllt.
Fehlermeldungen werden auch nicht angezeigt.
Ohne AJAX in meinem eigenen Modul würde, die Abhängigkeit des Feldes MeldeSpieler vom Feld MeldeMannschaft auch nicht funktionieren.
Es muss AJAX und JS parallel gehen.
Es muss m.E. nur verhindert werden, dass nach dem AJAX-Aufruf auch JS nochmals aufgerufen wird.
Vielleicht geht auch irgendwie einzustellen, dass die click()-Funktion auf jeden Fall nur 1x je Klick durchlaufen wird.