Jak ustawić symbol zastępczy na resetowanie wartości przez select2. W moim przykładzie Jeśli kliknięto pola wyboru lokalizacji lub oceny, a mój select2 ma wartość niż wartość select2 powinien zresetować i pokazać domyślny symbol zastępczy. Ten skrypt resetuje wartość, ale nie wyświetla symbolu zastępczego
$("#locations, #grade ").change(function() {
$('#e6').select2('data', {
placeholder: "Studiengang wählen",
id: null,
text: ''
});
});
$("#e6").select2({
placeholder: "Studiengang wählen",
width: 'resolve',
id: function(e) {
return e.subject;
},
minimumInputLength: 2,
ajax: {
url: "index.php?option=com_unis&task=search.locator&tmpl=component&<?php echo JSession::getFormToken() ?>=1",
dataType: 'json',
data: function(term, page) {
return {
q: term, // search term
g: $('#grade option:selected').val(),
o: $('#locations option:selected').val()
};
},
results: function(data, page) {
return {
results: data
};
}
},
formatResult: subjectFormatResult,
formatSelection: subjectFormatSelection,
dropdownCssClass: "bigdrop",
escapeMarkup: function(m) {
return m;
}
});
.select2("val", "")
działa.$("#customers_select").val('').trigger('change') ;
Użyłem tego i zadziałało.Select2 zmieniło swój interfejs API:
Najlepszym sposobem na zrobienie tego teraz jest:
Edycja: grudzień 2016 Komentarze sugerują, że poniżej jest zaktualizowany sposób to zrobić:
źródło
$('#your_select_input').val('').trigger('change')
change
dodawaniem wyzwalacza, ale także wyzwala bibliotekę sprawdzania poprawności, której używamy - na razie będę musiał użyć przestarzałej wersji.Przyjęta odpowiedź nie działa w moim przypadku. Próbuję tego i działa:
Zdefiniuj select2:
lub
Zresetować:
lub
źródło
$('#your_select_input').val('').trigger('change')
, ani$('#your_select_input').val('');
nie działa w FirefoksieJedyne, co może dla mnie zadziałać, to:
Używam wersji 4.0.3
Odniesienie
Zgodnie z dokumentacją Select2
źródło
$('select2element').val("").trigger("change")
działa dobrze.W przypadku Select2 w wersji 4.0.9 działa to dla mnie:
źródło
Select2 używa określonej klasy CSS, więc łatwym sposobem na jej zresetowanie jest:
Masz tę zaletę, że jeśli masz wiele Select2 w tej samej formie, wszystkie zostaną zresetowane za pomocą tego pojedynczego polecenia.
źródło
Użyj tego :
źródło
ABY USUNĄĆ WYBRANĄ WARTOŚĆ
ABY WYCZYŚĆ WARTOŚCI OPCJI
źródło
Wiem, że to trochę stare pytanie, ale działa to w przypadku select2 w wersji 4.0
lub
jeśli masz związane z tym zdarzenia
źródło
$('#select2-element').last().val('').trigger('change.select2');
Użyj poniższych, aby skonfigurować select2
I programowo wyczyścić wybrane dane wejściowe
źródło
To jest właściwy sposób:
Korzystam z najnowszej wersji Select2.
źródło
Najpierw musisz zdefiniować select2 w następujący sposób:
Aby zresetować select2, możesz po prostu użyć następującego bloku kodu:
źródło
Możesz wyczyścić wybór poprzez
Ale to nie sprawi, że wrócisz do swojego symbolu zastępczego.
Więc to połowa rozwiązania
źródło
Próbowałem powyższych rozwiązań, ale to nie działało dla mnie.
Jest to rodzaj włamania, w którym nie musisz inicjować zmian.
lub
źródło
Dla użytkowników ładujących dane zdalne spowoduje to zresetowanie select2 do symbolu zastępczego bez odpalania ajax. Działa z wersją 4.0.3:
źródło
Aby zresetować formularz, niektórzy z was będą mieli przycisk resetowania. Dodaj następujący kod do znacznika skryptu
Lub po prostu opróżnij pole wyboru bez zachowania symbolu zastępczego:
źródło
Dla posiadacza miejsca
Aby zresetować wybierz 2
Mam nadzieję że to pomoże
źródło
Zgodnie z zalecanym sposobem robienia tego. Znalezione w dokumentacji https://select2.github.io/options.html#my-first-option-is-being-displayed-instead-of-my-placeholder (wydaje się, że jest to dość powszechny problem):
Kiedy tak się dzieje, zwykle oznacza to, że nie masz spacji
<option></option>
jako pierwszej opcji w twoim<select>
.jak w:
źródło
Miałem również ten problem i wynika on z
val(null).trigger("change");
rzuceniaNo select2/compat/inputData
błędu przed zresetowaniem symbolu zastępczego. Rozwiązałem go, wychwytując błąd i ustawiając symbol zastępczy bezpośrednio (wraz z szerokością). Uwaga: jeśli masz więcej niż jeden, musisz złapać każdego z nich.Korzystam z Select2 4.0.3
źródło
change
zdarzeniem. Spróbuj wyzwalaćchange.select2
- to nie wyzwoli powiązanych słuchaczy (zobacz github.com/select2/select2/issues/3620 ).od wersji 4.0.x ...
aby usunąć wartości, ale także przywrócić użycie symbolu zastępczego ...
jeśli jest pusty, zamiast tego wybierze pierwszy element opcji, który może nie być tym, czego chcesz
szczerze mówiąc ... Select2 to taki ból w tyłku, zadziwia mnie, że nie został zastąpiony.
źródło
Próbowałem powyższych rozwiązań, ale żadne nie działało z wersją 4x.
Chcę osiągnąć: wyczyść wszystkie opcje, ale nie dotykaj symbolu zastępczego. Ten kod działa dla mnie.
źródło
Przy użyciu wersji select2 3.2 zadziałało to dla mnie:
Nie musiałem wdrażać
initSelection
źródło
Po wypróbowaniu pierwszych 10 rozwiązań i niepowodzenia, znalazłem to rozwiązanie, które zadziałało (patrz: „komentarz Nilov do 7 kwietnia • edytowany” komentarz w dół strony):
Następnie dokonuje się zmiany:
(Autor pierwotnie pokazał
var $select = $(this[1]);
, do którego poprawił komentator, co pokazałemvar $select = $(this[0]);
powyżej).źródło
Użyj tego kodu w pliku js
źródło
Zanim wyczyścisz tę wartość,
$("#customers_select").select2("val", "");
spróbuj ustawić fokus na dowolnym innym elemencie sterującym po kliknięciu resetowania.Spowoduje to ponowne wyświetlenie symbolu zastępczego.
źródło
Interfejs DOM już śledzi stan początkowy ...
Wystarczy więc wykonać następujące czynności:
źródło
Cóż, kiedykolwiek to zrobiłem
Zacząłem mieć jakieś opóźnienie po około trzech do czterech wyzwalaczy. Przypuszczam, że wyciek pamięci. Nie ma go w moim kodzie, ponieważ jeśli usunę ten wiersz, moja aplikacja będzie wolna od opóźnień.
Ponieważ mam ustawione na true opcje allowClear, poszedłem z
Po tym może nastąpić $ („myselectdropdown”). Select2 („close”); wyzwalacz zdarzenia na elemencie select2 dom, na wypadek gdybyś chciał zamknąć rozwijaną listę sugestii.
źródło
Jeden [bardzo] hacky sposób, aby to zrobić (widziałem, że działa w wersji 4.0.3):
źródło
Moje rozwiązanie to:
źródło
gdzie 0 to Twoja pierwsza wartość listy rozwijanej
źródło