Ich habe ein Problem mit dem Select2 von jQuery.
Wenn die Seite geladen wird, wenn O auf das Suchergebnis klickt, wird das Ereignis onchange ausgewählt und ausgelöst, aber nur das erste Mal.
Wenn ich eine andere Zeit suche, wird es nicht.
Hier ist mein Code (es ist eine Ajax-basierte Suche):
%Vor%Das ist was ich benutze:
%Vor%Für die neuesten jQuery-Benutzer sollte dieser funktionieren:
%Vor%Offensichtlich wird das Änderungsereignis nicht ausgelöst, wenn bei der Verwendung von Daten bereits eine Auswahl existiert. Am Ende habe ich die Daten manuell aktualisiert, um das Problem zu beheben.
%Vor%Ich weiß, das ist ziemlich spät, aber hoffentlich wird diese Antwort anderen Zeit sparen.
Das liegt daran, dass die Items identisch sind. Bei Änderung wird nur ausgelöst, wenn bei Auswahl eine andere Element-ID gefunden wird.
Sie haben also 2 Möglichkeiten: Zuerst muss sichergestellt werden, dass jedes Element eine eindeutige ID hat, wenn Daten von Ajax abgerufen werden.
Zweitens wird eine Randnummer bei formatSelection für das ausgewählte Element ausgelöst.
%Vor%.
%Vor% Ab Version 4.0.0 funktionieren Ereignisse wie select2-selecting
nicht mehr . Sie werden wie folgt umbenannt:
- select2-close ist jetzt select2: close
- select2-open ist jetzt select2: open
- select2-opening ist jetzt select2: opening
- select2-selecting ist jetzt select2: selecting
- select2-removed ist jetzt select2: removed
- select2-removing ist jetzt select2: Auswahl aufheben
Hinweis: Ссылка
Legen Sie Ihren .on
Listener fest, um nach bestimmten select2-Ereignissen zu suchen. Das "change" -Ereignis ist das gleiche wie üblich, aber die anderen sind spezifisch für das select2-Steuerelement:
Die Namen sind selbsterklärend. Zum Beispiel wird select2-focus
ausgelöst, wenn Sie dem Steuerelement den Fokus zuweisen.
Mein select2-Element hat das onchange
-Ereignis nicht ausgelöst, da die Dropdown-Liste nur einen Wert enthielt, was es unmöglich machte, den Wert zu ändern.
Der Wert wurde nicht geändert, kein Ereignis wurde ausgelöst und der Handler konnte nicht ausgeführt werden.
Ich habe dann einen anderen Handler hinzugefügt, um den Wert zu löschen, wobei der select2-open
Handler vor dem onchange
Handler ausgeführt wird.
Der Quelltext sieht jetzt so aus:
%Vor%Der erste Handler löscht den Wert und erlaubt es dem zweiten Handler, hochzufeuern, selbst wenn er denselben Wert auswählt.
Tags und Links jquery events jquery-select2 onchange