Pytanie "Funkcja zapytania nie została zdefiniowana dla niezdefiniowanego błędu Select2"


Próbujesz użyć Select2 i uzyskać ten błąd w wielu polach wejściowych / tekstowych:

"query function not defined for Select2 undefined error"

111
2018-01-23 15:36


pochodzenie




Odpowiedzi:


Objęte tym wątkiem grupy google

Problem polegał na tym, że dodatkowy element div był dodawany przez select2. Select2 dodał nowy div z klasą "select2-container form-wybierz", aby owinąć utworzony wybór. Więc następnym razem, gdy załadowałem tę funkcję, błąd został zgłoszony, ponieważ select2 był dołączony do elementu div. Zmieniłem selektor ...

Przedrostek select2 css identyfikator ze specjalną nazwą tagu "select":

$('select.form-select').select2();

218
2018-01-23 15:36



w jakiś sposób naprawiłem to dla mnie, w moim przypadku klonowałem rządek formularzy, które zawierały wybrane menu select2 i wszystkie dziwne rzeczy dzieją się po pierwszym klonie. - martincarlin87
^ __ ^ dzięki chłopaki! Gdybym mógł policzyć godziny spędzone w zapasach z dostosowywaniem Select2 ... - Daniel Morris
Również musi być w środku $(document).ready(function() { $('select.form-select').select2()}) - TED
W jaki sposób można rozwiązać ten sam problem w wytycznych Angular UI Select2? - zavidovych
Ten problem zwykle występuje, jeśli kontrola wyboru została już zainicjalizowana przez .select2({}) metoda. Lepszym rozwiązaniem byłoby najpierw wywołanie metody destroy. Dawny: $("#mySelectControl").select2("destroy").select2({}); - Dmitry S.


Ten komunikat o błędzie jest zbyt ogólny. Jednym z innych możliwych źródeł jest to, że próbujesz zadzwonić select2() metoda na wejściu "select2ed".


13
2017-12-01 12:50





Jeśli zainicjujesz puste dane, wykonaj następujące czynności:

$(".yourelement").select2({
 data: {
  id: "",
  text: ""
 }
});

Przeczytaj pierwszy komentarz poniżej, który wyjaśnia, dlaczego i kiedy należy użyć kodu w mojej odpowiedzi.


10
2017-11-04 11:32



Miałem ten problem, kiedy migrowałem box select2 z rzeczywistego elementu select do typu input = hidden, który zapełniłem później. Podczas przechodzenia przez kod select2 ten błąd jest zgłaszany, ponieważ nie przekazano wartości zapytania, ajax, danych lub znaczników. - Daniel
To powinna być akceptowana odpowiedź na to pytanie. Nie pewny dlaczego select2()nie będzie po prostu akceptować pustych parametrów - swdev


Miałem również ten problem, upewnij się, że nie zainicjalizujesz select2 dwa razy.


9
2017-09-22 12:13



to samo dla mnie, ale błąd nie był dla mnie problemem. s2 i tak działa - Reign.85


Dla mnie ten problem sprowadził się do ustawienia właściwego atrybutu data-ui-select2:

<input type="text" data-ui-select2="select2Options.projectManagers" placeholder="Project Manager" ng-model="selectedProjectManager">


$scope.projectManagers = { 
  data: []  //Must have data property 
}

$scope.selectedProjectManager = {};

Jeśli zdejmę data własność na $scope.projectManagers Dostaję ten błąd.


5
2018-01-15 16:53





Ten problem sprowadzał się do tego, jak budowałem moje pole wyboru select2. W jednym pliku javascript miałem ...

$(function(){
  $(".select2").select2();
});

I w innym pliku js przesłonić ...

$(function(){
    var employerStateSelector = 
                $("#registration_employer_state").select2("destroy");
    employerStateSelector.select2({
    placeholder: 'Select a State...'
    });
});

Przeniesienie drugiego nadpisania na zdarzenie ładowania okna rozwiązało problem.

$( window ).load(function() {
  var employerStateSelector = 
              $("#registration_employer_state").select2("destroy");
  employerStateSelector.select2({
    placeholder: 'Select a State...'
  });
});

Ten problem rozkwitł w aplikacji Rails


4
2017-09-13 16:01





Też mam ten sam błąd, kiedy używam ajaxa z textboxem, a potem go rozwiązuję usuń klasę select2 textbox i setup select2 według id:

$(function(){
  $("#input-select2").select2();
});

3
2017-09-19 12:32





Wygląda na to, że twój selektor zwraca niezdefiniowany element (dlatego undefined error jest zwracany)

Jeśli element naprawdę istnieje, wywołujesz select2 na input element bez dostarczania czegokolwiek do select2, skąd powinien pobrać dane. Zazwyczaj jeden wywołuje .select2({data: [{id:"firstid", text:"firsttext"}]).


2
2018-02-11 15:15





Otrzymałem ten sam błąd podczas korzystania z ajax.

Jeśli używasz ajax do renderowania formularzy z select2, klasa input_html musi być inna niż te, które NIE są renderowane przy użyciu ajax. Nie do końca wiem, dlaczego tak działa.


2
2018-02-22 10:49



Masz na myśli: "<input type = 'hidden' class = 'foo' ...." gdzie, jeśli masz kilka select2, nie wszystkie mogą być "foo"? To nie działa dla mnie. - dethSwatch