Für select2 Version> = 4.0.0
Die anderen Lösungen funktionieren möglicherweise nicht, die folgenden Beispiele sollten jedoch funktionieren.
Lösung 1: Löst alle angehängten Änderungsereignisse aus, einschließlich select2
$('select').val('1').trigger('change');
Lösung 2: Löst das Ereignis JUST select2 change aus
$('select').val('1').trigger('change.select2');
Beispiele hierfür finden Sie in dieser jsfiddle . Vielen Dank an @minlare für Lösung 2.
Erläuterung:
Angenommen, ich habe einen besten Freund mit den Namen der Leute ausgewählt. Also Bob, Bill und John (in diesem Beispiel gehe ich davon aus, dass der Wert mit dem Namen identisch ist). Zuerst initialisiere ich select2 auf meinem select:
$('#my-best-friend').select2();
Jetzt wähle ich Bob manuell im Browser aus. Als nächstes macht Bob etwas Unartiges und ich mag ihn nicht mehr. Das System hebt Bob für mich auf:
$('#my-best-friend').val('').trigger('change');
Oder sagen Sie, ich lasse das System anstelle von Bob das nächste in der Liste auswählen:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Hinweise zur Select 2-Website (siehe Veraltete und entfernte Methoden ), die für andere nützlich sein können:
.select2 ('val')
Die "val" -Methode ist veraltet und wird in Select2 4.1 entfernt. Die veraltete Methode enthält den Parameter triggerChange nicht mehr.
Sie sollten stattdessen direkt .val für das zugrunde liegende Element aufrufen. Wenn Sie den zweiten Parameter (triggerChange) benötigen, sollten Sie auch .trigger ("change") für das Element aufrufen.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');
change
Ereignis gebunden sind (z. B. das Neuladen des Formulars). Andernfalls würden diese Aktionen beim Auslösen redundant aufgerufenchange()
.onChange
Wenn Sie sich die select2-Dokumente ansehen, verwenden Sie die folgenden Informationen , um den Wert abzurufen / festzulegen .
@PanPipes hat darauf hingewiesen, dass sich dies für 4.x geändert hat (werfen Sie ihm unten eine positive Bewertung).
val
wird jetzt direkt aufgerufen$("#select").val("CA");
Innerhalb
loadComplete
des jqGrid können Sie also den gewünschten Wert abrufen und dann den Selectbox-Wert festlegen.Hinweis aus den Dokumenten
quelle
val
Anruf behandelt wird.<select>
aufselect2
Kontrolle umgestellt wurde, indem man das Vorhandensein der Klasseselect2-offscreen
auf dem testet<select>
. Alle Elemente der Suchsymbolleiste haben eine ID, die mit demgs_
Präfix beginnt und den Namen wie in hatcolModel
. Sie können verwendengetGridParam
, um zu bekommencolModel
.select2
Auswahl neu erstellt wurde. Ich werde heute noch einen Blick darauf werfen, vielleicht kann ich es mit frischen Augen reparieren. Danke noch einmal. Update: Das Umschließen des Codes in eine boolesche Prüfung hat das Problem behoben, das ich hatte, obwohl die Aktualisierung der Suchleiste gestoppt wurde, anstatt das vorherige Element erneut auszuwählen.Dies sollte hilfreich sein.
quelle
Dies sollte noch einfacher sein.
Stellen Sie jedoch sicher, dass die von Ihnen übergebenen Werte bereits in der HTMl vorhanden sind
quelle
Wenn Sie neue
value='newValue'
und hinzufügen möchtentext='newLabel'
, sollten Sie diesen Code hinzufügen:Neue Option hinzufügen zu
<select>
:Trigger
<select>
Änderung ausgewählten Wert:quelle
Ich wollte nur eine zweite Antwort hinzufügen. Wenn Sie die Auswahl bereits als Auswahl2 gerendert haben, muss dies wie folgt in Ihrer Auswahl angezeigt werden:
quelle
Sie haben zwei Möglichkeiten: Wenn die Antwort von @PanPipes lautet, können Sie Folgendes tun.
Dies ist nur dann eine akzeptable Lösung, wenn keine benutzerdefinierten Aktionen an das Änderungsereignis gebunden sind. Die Lösung, die ich in dieser Situation verwende, besteht darin, ein select2-spezifisches Ereignis auszulösen, das die angezeigte select2-Auswahl aktualisiert.
quelle
Probleme beim Festlegen einer in select2 ausgewählten String-Option:
Mit der Option: "Option string1 / Option" verwendet:
ABER mit einer Option mit einem Wert: Optionswert "E" string1 / Option:
Hoffe, dass dies jemandem hilft, der mit dem gleichen Problem zu kämpfen hat.
quelle
Wenn Sie einen einzelnen Wert auswählen möchten, verwenden Sie
$('#select').val(1).change()
Wenn Sie mehrere Werte auswählen möchten, legen Sie den Wert im Array fest, damit Sie diesen Code verwenden können
$('#select').val([1,2,3]).change()
quelle
Für V4 Select2, wenn Sie sowohl den Wert von select2 als auch die Textdarstellung des Dropdowns ändern möchten.
Dadurch wird nicht nur der Wert hinter den Kulissen festgelegt, sondern auch die Textanzeige für select2.
Abgerufen von https://select2.github.io/announcements-4.0.html#removed-methods
quelle
Mein erwarteter Code:
Ich arbeite perfekt, danke an @PanPipes für die nützliche.
quelle
mach das
quelle
Wenn Sie eine Ajax-Datenquelle haben, lesen Sie diese bitte, um Fehler zu vermeiden
https://select2.org/programmatic-control/add-select-clear-items
// Richten Sie das Select2-Steuerelement ein
// Das vorgewählte Element abrufen und dem Steuerelement hinzufügen
quelle
Wenn Sie ein ausgewähltes Element festlegen möchten, wenn Sie den Text aus der Dropdown-Liste kennen und den Wert nicht kennen, finden Sie hier ein Beispiel:
Angenommen, Sie haben eine Zeitzone herausgefunden und möchten sie festlegen, aber die Werte enthalten
time_zone_id
sie.quelle
Schriftart: Wählen Sie 2 Dokumentationen aus
quelle
Sie können einfach die get / set-Methode verwenden, um den Wert festzulegen
oder Sie können dies tun:
quelle