2013-07-23 13 views
9

Mam wejście select2, którego używam i na "zmianę" Przechwytywam wartości i wykonuję akcję. Próbuję wyczyścić to select2 bez wywoływania zdarzenia zmiany. czy to możliwe?Wyczyść select2 bez wywoływania zmiany zdarzenia

Aby wyczyścić select2 używam następujący kod:

$docInput.select2('data', null); 

ta kasuje wejście jako pożądany, ale również wywołuje zdarzenie change, która biegnie przez moje innym kodem. Musi być sposób na uciszenie spustu. Jakieś pomysły?

+1

Można zrobić test w onChange imprezy i upewnij się, że wejście nie jest puste, zanim zrobisz cokolwiek, co robisz w tej funkcji. – Jnatalzia

+0

Czy możesz podać [jsfiddle] (http://jsfiddle.net) tego, co aktualnie masz? – Dom

+0

@Jnatalzia Obecnie używam twojego pomysłu jako "poprawki", ale jestem ciekawy, czy wyczyszczenie select2 bez wywoływania zdarzenia zmiany jest faktycznie możliwe. Dzięki za pomysł. –

Odpowiedz

13

wierzę, wszystko czego potrzebujesz to:

$docInput.select2('data', null, false);

+3

+1 - tak, że działa ... http://jsfiddle.net/dirtyd77/MhUK7/1/ – Dom

+0

Tak, należy to zrobić jako tymczasową poprawkę, otworzę dzisiaj problem/PR. –

+0

Dziękuję wszystkim za poświęcony czas. Doceniam pomoc. –

37

można użyć następujących z Select2 4.x

$docInput.val(null).trigger('change.select2'); 
+0

Czy to jedyny sposób, aby znaleźć? –

+0

Tak. Działa dobrze. –

+0

Działa to, ponieważ wywołuje ono zdarzenie 'change' z przestrzenią nazw, której szuka Select2 (' .select2'), więc inne procedury obsługi zdarzeń nie zostaną uruchomione. Ten obszar nazw może się zmienić w przyszłości, ale jest to mało prawdopodobne. –

Powiązane problemy