我有一个使用AJAX的Select2控件 - 我可以搜索远程存储库并从中选择选项就好了。我想做的是,每次AJAX搜索返回时,都会向控件添加一个新选项,以将该搜索词添加为新选项。
当搜索结果为空时,它不应该只是添加它,而是每次搜索时都添加它。
Ex:我搜索baseball
,我的AJAX搜索会返回以下结果:
baseball fields
baseball games
baseball equipment
我希望Select2下拉列表显示:
baseball fields
baseball games
baseball equipment
baseball (Add As New)
希望这就像找到正确的Select2选项一样简单。我可以在processResults
选项的ajax
部分轻松添加一个选项,但无法弄清楚如何获取搜索到的实际字词。
编辑:此问题在版本3.5.2及更低版本中是可解决的,但我使用的是4.0。
答案 0 :(得分:0)
我现在用一个解决问题的草率黑客来回答我自己的问题......看起来这很容易在Select2 3.5.x中使用createSearchChoice
选项解决,但是已经删除了显然在v4.0中重组了。
在ajax
选项中,我已经在使用url
,因此我只是声明了一个全局变量lastSearch
,我在该网址返回之前更新了
ajax: {
url: function(params) {
lastSearch = params.term;
return "http://myapiurl.com/path/to/endpoint?search=" + params.term;
}
}
然后在processResults
中,快速检查搜索字词是否为空,然后只需将其附加到我的API返回的数据
processResults: function(data) {
if (lastSearch != "") {
data.push({
id: "-1",
text: lastSearch + " (Add As New)"
});
}
return { results: data }
}
同样,不是最干净的,但它现在完成了工作。我认为,由于此功能在旧版本的Select2中可用,因此它已被移动到v4.0中的其他位置,但尚未找到。