“查询函数未定义为Select2未定义错误”

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

"query function not defined for Select2 undefined error" 

涵盖在这个谷歌组线程

问题是因为s​​elect2添加了额外的div。 select2已经添加了类“select2-container form-select”的新div来包装创build的select。 所以下次我加载函数,错误被抛出,因为select2被附加到div元素。 我改变了我的select器…

前缀select2具有特定标签名称的css标识符“select”:

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

这个错误信息太笼统了。 其他可能的来源之一是你正试图调用select2()方法已经“select2ed”input。

如果你初始化一个空的input这样做:

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

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

我也有这个问题,确保你不要初始化select2两次。

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

如果我$scope.projectManagers上的data属性,我得到这个错误。

这个问题归结为我如何构build我的select2select框。 在一个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应用程序里面开花了

我也遇到了同样的错误时使用ajax与文本框,然后我通过删除文本框的类select2并通过id设置select2像解决它:

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

看来你的select器返回一个未定义的元素(因此返回undefined error

如果元素确实存在,则在input元素上调用select2,而不向select2提供任何内容,它应从中获取数据。 通常,调用.select2({data: [{id:"firstid", text:"firsttext"}])

使用ajax时也得到了同样的错误。

如果您使用ajax来使用select2呈现表单,则input_html类必须与使用ajax呈现的类不同。 不太清楚为什么这样工作。

我得到了同样的错误。 我一直在使用select2-3.5.2

这是我的代码有错误

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

下面的代码解决了问题。

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

我有一个复杂的Web应用程序,我无法弄清楚为什么这个错误被抛出。 这是导致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")); } 

现在一切似乎正常工作,但它仍然logging在错误的情况下,我想尝试找出究竟是什么在我的代码导致错误。 但是现在这对我来说已经足够好了。

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

这是抛出becase查询不存在的选项。 在内部维护一个检查,要求参数如下

  • 阿贾克斯
  • 标签
  • 数据
  • 询问

所以你只需要提供select2的4个选项之一,它应该按预期工作。