2012-07-26 13 views
23

Próbuję użyć funkcji createSearchChoice, aby umożliwić użytkownikom wprowadzanie własnego wyboru, gdy domyślna lista nie będzie wystarczająca. Kiedy próbuję użyć tej funkcji na elemencie <select>, pojawia się następujący błąd:Korzystanie z funkcji Create2 funkcji createSearchChoice

Error: Error: Option 'createSearchChoice' is not allowed for Select2 when attached to a <select> element.

Próbowałem za pomocą elementu <input type='hidden'> zamiast, ale teraz pojawia się następujący błąd:

Error: uncaught exception: query function not defined for Select2 'MyInputName'

Wolałbym użyć elementu select, aby zachować zgodność z istniejącym kodem (potrzebna jest możliwość wyboru wielu opcji), ale po prostu potrzebna jest możliwość wprowadzenia przez użytkowników swojej własnej opcji oprócz wyboru z wcześniejszej listy.

+0

mógłbyś wysłać kod HTML i JavaScript, który przechwytuje go? – Prescott

+0

Wygląda na to, że musisz użyć ukrytego - ale możesz ustawić "opcje" w podłączeniu danych 'data: ...' – Prescott

Odpowiedz

28

Boże, jak mogę anulować tę nagrodę. Wpadłem w panikę i z powodu paniki byłem w stanie odpowiedzieć na to, czego oboje szukaliśmy:

Nie można używać createSearchChoice na select. Więc musisz użyć zamiast tego input.

<input type="hidden" id="category"> 

Rozwiązaniem jest użycie parametru query:

$("#category").select2({query:function(query){ 
    var data = {results: []}; 
    data.results.push({text: query.term}); 
    query.callback(data); 
}}); 

Co to robi to dodać bieżącą kadencję do opcji, jeśli go tam nie ma. Można wypełnić obiekt results tak:

var data = {results: [{text:'math'},{text:'science'}]}; 

to rozwiązać mój problem, więc mam nadzieję, że rozwiązać twoje. Myślę, że powinniśmy przeczytać więcej na temat documentation.

+0

Aw, miałem nadzieję na jakąś nagrodę! Cieszę się, że to wymyśliłeś. – Prescott

+0

Okazuje się, że parametr zapytania nie jest wymagany, ale parametr danych musi znajdować się w tym samym konstruktorze. Dane wejściowe formularza zostały dodane do mojej strony z klasą specyficzną dla używanego frameworka i zawierały jeden konstruktor z parametrem danych, a ja próbowałem dodać createSearchChoice w osobnym konstruktorze unikalnym dla tej strony. Trochę personalizacji i wszystko działa teraz. Przepraszam za spóźnioną odpowiedź. Twoja odpowiedź doprowadziła mnie jednak we właściwym kierunku, więc proszę zachować nagrodę. :) – jrrdnx

+0

@jrrdnx Czy możesz przesłać część swojego kodu dotyczącego zapytania i parametrów danych? – RailinginDFW

2

miałem ten problem, a to ze względu na wywołanie select2 na tym samym polu dwukrotnie

Powiązane problemy