"未针对Select2未定义错误定义查询函数"

Dan*_*ris 118 javascript runtime-error jquery-select2

尝试使用Select2并在多个项目输入/文本字段上获取此错误:

"query function not defined for Select2 undefined error"
Run Code Online (Sandbox Code Playgroud)

Dan*_*ris 234

这个谷歌组线程涵盖

问题是因为s​​elect2添加了额外的div.Select2添加了带有"select2-container form-select"类的新div来包装创建的select.因此,下次加载函数时,由于select2被附加到div元素,因此抛出了错误.我改变了我的选择器......

前缀select2 css标识符,具有特定标记名称"select":

$('select.form-select').select2();
Run Code Online (Sandbox Code Playgroud)

  • 如果select控件已经由`.select2({})`方法初始化,则通常会发生此问题.更好的解决方案是首先调用destroy方法.例如:`$("#mySelectControl").select2("destroy").select2({});` (10认同)

Mar*_*n D 15

此错误消息太笼统.其他一个可能的来源是你试图select2()在已经"select2ed"输入上调用方法.


kap*_*day 12

如果您初始化空输入,请执行以下操作:

$(".yourelement").select2({
 data: {
  id: "",
  text: ""
 }
});
Run Code Online (Sandbox Code Playgroud)

阅读下面的第一条评论,它解释了为什么以及何时应该在我的答案中使用代码.

  • 当我将select2框从实际的select元素迁移到我稍后填充的input type = hidden元素时,我遇到了这个问题.在单步执行select2代码时,会抛出此错误,因为没有传入查询,ajax,数据或标记值. (2认同)

小智 10

我也有这个问题,确保你没有初始化select2两次.


par*_*ent 6

对我来说,这个问题归结为设置正确的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 = {};
Run Code Online (Sandbox Code Playgroud)

如果我取消该data物业,$scope.projectManagers我会收到此错误.


kea*_*gik 5

这个问题归结为我如何构建我的select2选择框.在一个javascript文件中,我有......

$(function(){
  $(".select2").select2();
});
Run Code Online (Sandbox Code Playgroud)

并在另一个js文件中覆盖...

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

将第二个覆盖移动到窗口加载事件中解决了该问题.

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

这个问题在Rails应用程序中蓬勃发展