“查询函数未定义为Select2未定义错误”
尝试使用Select2并在多个项目input/文本字段上获取此错误:
"query function not defined for Select2 undefined error"
涵盖在这个谷歌组线程
问题是因为select2添加了额外的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个选项之一,它应该按预期工作。