Dla wersji select2> = 4.0.0
Inne rozwiązania mogą nie działać, jednak poniższe przykłady powinny działać.
Rozwiązanie 1: Powoduje wyzwolenie wszystkich dołączonych zdarzeń zmiany, w tym select2
$('select').val('1').trigger('change');
Rozwiązanie 2: Powoduje wyzwolenie zdarzenia zmiany JUST select2
$('select').val('1').trigger('change.select2');
Zobacz tego jsfiddle dla przykładów. Dzięki @minlare dla Solution 2.
Wyjaśnienie:
Powiedzmy, że mam najlepszego przyjaciela z nazwiskami osób. Więc Bob, Bill i John (w tym przykładzie zakładam, że wartość jest taka sama jak nazwa). Najpierw inicjuję select2 w moim select:
$('#my-best-friend').select2();
Teraz ręcznie wybieram Boba w przeglądarce. Następnie Bob robi coś niegrzecznego i już go nie lubię. Dlatego system odznacza dla mnie Boba:
$('#my-best-friend').val('').trigger('change');
Lub powiedz, że każę systemowi wybrać następny z listy zamiast Boba:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Uwagi na temat witryny Select 2 (patrz Przestarzałe i usunięte metody ), które mogą być przydatne dla innych:
.select2 („val”)
Metoda „val” została uznana za przestarzałą i zostanie usunięta w Select2 4.1. Przestarzała metoda nie zawiera już parametru triggerChange.
Zamiast tego powinieneś bezpośrednio wywołać .val na podstawowym elemencie. Jeśli potrzebujesz drugiego parametru (triggerChange), powinieneś także wywołać .trigger („zmiana”) na elemencie.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');
change
zdarzeniem (takich jak przeładowanie formularza). W przeciwnym razie działania te byłyby wywoływane zbędnie po uruchomieniuchange()
.onChange
)Patrząc na dokumenty select2, których używasz poniżej, aby uzyskać / ustawić wartość.
@PanPipes zwrócił uwagę, że zmieniło się to w wersji 4.x (rzuć mu głos poniżej).
val
jest teraz nazywany bezpośrednio$("#select").val("CA");
Więc w ramach
loadComplete
jqGrid możesz uzyskać dowolną wartość, której szukasz, a następnie ustawić wartość pola wyboru.Powiadomienie z dokumentów
źródło
val
połączenie.<select>
przekonwertowano je naselect2
kontrolę, testując istnienie klasyselect2-offscreen
w sieci<select>
. Wszystkie elementy paska narzędzi wyszukiwania mają id, które zaczynają się odgs_
przedrostka i mają nazwę jak wcolModel
. Możesz użyć,getGridParam
aby uzyskaćcolModel
.select2
select. Spojrzę dziś jeszcze raz, może mogę to naprawić ze świeżymi oczami. Dzięki jeszcze raz. Aktualizacja: zawinięcie kodu w wynik boolowski naprawił problem, który miałem, chociaż przestał odświeżać pasek wyszukiwania zamiast wybierać poprzedni element.to powinno pomóc.
źródło
To powinno być jeszcze łatwiejsze.
Ale upewnij się, że przekazywane wartości są już obecne w HTMl
źródło
Jeśli chcesz dodać nowy
value='newValue'
itext='newLabel'
, powinieneś dodać ten kod:Dodaj nową opcję do
<select>
:Wyzwól
<select>
zmianę na wybraną wartość:źródło
Chciałem tylko dodać drugą odpowiedź. Jeśli wybrałeś już opcję select jako select2 , musisz mieć ją odzwierciedloną w selektorze w następujący sposób:
źródło
Masz dwie opcje - ponieważ odpowiedź @PanPipes stwierdza, że możesz wykonać następujące czynności.
Jest to akceptowalne rozwiązanie tylko wtedy, gdy nie ma żadnych niestandardowych działań powiązanych ze zdarzeniem zmiany. Rozwiązaniem, którego używam w tej sytuacji, jest wywołanie określonego zdarzenia select2, które aktualizuje wyświetlany wybór select2.
źródło
Problemy z ustawieniem opcji String wybranej w select2:
Z opcją: „ciąg opcji 1 / opcja” zastosowany:
ALE z opcją o wartości: wartość opcji „E” string1 / opcja:
Ma nadzieję, że pomoże to komuś, kto zmaga się z tym samym problemem.
źródło
jeśli chcesz wybrać pojedynczą wartość, użyj
$('#select').val(1).change()
jeśli chcesz wybrać wiele wartości, ustaw wartość w tablicy, abyś mógł użyć tego kodu
$('#select').val([1,2,3]).change()
źródło
W przypadku V4 Select2, jeśli chcesz zmienić zarówno wartość select2, jak i tekstową reprezentację menu rozwijanego.
Spowoduje to ustawienie nie tylko wartości za scenami, ale także wyświetlania tekstu dla select2.
Pobrano z https://select2.github.io/announcements-4.0.html#removed-methods
źródło
Mój oczekiwany kod:
działa idealnie dzięki @PanPipes za przydatny.
źródło
Zrób to
źródło
jeśli masz źródło danych ajax, zapoznaj się z nim, aby znaleźć błędy
https://select2.org/programmatic-control/add-select-clear-items
// Skonfiguruj formant Select2
// Pobierz wstępnie wybrany element i dodaj do kontrolki
źródło
jeśli chcesz ustawić wybrany element, gdy znasz tekst z listy rozwijanej i nie znasz wartości, oto przykład:
Powiedzmy, że wymyśliłeś strefę czasową i chcesz ją ustawić, ale mają
time_zone_id
w sobie wartości .źródło
Czcionka: wybierz 2 dokumenty
źródło
możesz po prostu użyć metody get / set do ustawienia wartości
lub możesz to zrobić:
źródło