"функция запроса, не определенная для Select2 undefined error"
Попытка использовать Select2 и получить эту ошибку в нескольких вводах ввода/текстовом поле:
"query function not defined for Select2 undefined error"
Ответы
Ответ 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");
}
Это отбрасывается, потому что в опциях не существует запроса. Внутри есть проверка, которая требует для параметра
Итак, вам просто нужно предоставить один из этих 4 вариантов select2, и он должен работать как ожидалось.