Подтвердить что ты не робот

"функция запроса, не определенная для Select2 undefined error"

Попытка использовать Select2 и получить эту ошибку в нескольких вводах ввода/текстовом поле:

"query function not defined for Select2 undefined error"
4b9b3361

Ответ 1

Включено в этот поток группы google

Проблема заключалась в дополнительном div, который добавлялся select2. Select2 добавил новый div с классом "select2-container form-select", чтобы обернуть созданный выбор. Поэтому в следующий раз, когда я загрузил функцию, ошибка была выбрана, так как select2 был присоединен к элементу div. Я изменил свой селектор...

Префикс select2 css identifier с определенным именем тега "select":

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

Ответ 2

Это сообщение об ошибке слишком общее. Одним из других возможных источников является то, что вы пытаетесь вызвать метод select2() на уже выбранном "select2ed".

Ответ 3

Если вы инициализируете пустой ввод, выполните следующие действия:

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

Прочитайте первый комментарий ниже, он объясняет, почему и когда вы должны использовать код в своем ответе.

Ответ 4

У меня также была эта проблема, убедитесь, что вы не инициализируете select2 дважды.

Ответ 5

Для меня эта проблема сводилась к настройке правильного атрибута 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 = {};

Если я сниму свойство data на $scope.projectManagers, я получаю эту ошибку.

Ответ 6

Эта проблема сводилась к тому, как я строил свой select2 select box. В одном файле javascript у меня был...

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

И в другом файле js переопределить...

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

Перемещение второго переопределения в событие загрузки окна разрешило проблему.

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

Эта проблема расцвела внутри приложения Rails

Ответ 7

Я также получил ту же ошибку при использовании ajax с текстовым полем, затем я разрешаю ее с помощью удалить класс select2 текстового поля и настройте select2 по id, например:

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

Ответ 8

Кажется, что ваш селектор возвращает элемент undefined (поэтому возвращается undefined error)

В случае, если элемент действительно существует, вы вызываете select2 в элементе input, не поставляя ничего для select2, откуда он должен извлекать данные. Обычно вызывается .select2({data: [{id:"firstid", text:"firsttext"}]).

Ответ 9

Также была получена такая же ошибка при использовании ajax.

Если вы используете ajax для визуализации форм с помощью select2, класс input_html должен отличаться от тех, которые не отображаются с помощью ajax. Не совсем уверен, почему он работает таким образом, хотя.

Ответ 10

Я получил ту же ошибку. Я использовал select2-3.5.2

Это был мой код с ошибкой

    $('#carstatus-select').select2().val([1,2])

Ниже код исправил проблему.

    $('#carstatus-select').val([1,2]);

Ответ 11

У меня сложное веб-приложение, и я не мог понять, почему именно эта ошибка возникает. Это заставило JavaScript отменить при броске.

В select2.js я изменил:

        if (typeof(opts.query) !== "function") {
            throw "query function not defined for Select2 " + opts.element.attr("id");
        }

в

        if (typeof(opts.query) !== "function") {
            console.error("query function not defined for Select2 " + opts.element.attr("id"));
        }

Теперь все работает нормально, но оно все еще регистрируется в ошибке, если я хочу попытаться выяснить, что именно в моем коде вызывает ошибку. Но пока это достаточно хорошо для меня.

Ответ 12

if (typeof(opts.query) !== "function") {
    throw "query function not defined for Select2 " + opts.element.attr("id");
}

Это отбрасывается, потому что в опциях не существует запроса. Внутри есть проверка, которая требует для параметра

  • Ajax
  • теги
  • данные
  • Запрос

Итак, вам просто нужно предоставить один из этих 4 вариантов select2, и он должен работать как ожидалось.