向 Select2 AJAX 控件添加搜索词选项
Posted
技术标签:
【中文标题】向 Select2 AJAX 控件添加搜索词选项【英文标题】:Add search term option to Select2 AJAX control 【发布时间】:2015-11-02 13:57:47 【问题描述】:我有一个使用 AJAX 的 Select2 控件 - 我可以搜索远程存储库并从中选择选项。不过,我想做的是每次 AJAX 搜索返回时向控件添加一个新选项,以将该搜索词添加为新选项。
它不应该只是在搜索返回为空时添加它,而是每次搜索都添加它。
例如:我搜索 baseball
,我的 AJAX 搜索返回以下结果:
baseball fields
baseball games
baseball equipment
我希望显示 Select2 下拉菜单:
baseball fields
baseball games
baseball equipment
baseball (Add As New)
希望这就像找到要挂钩的正确 Select2 选项一样简单。我可以轻松地在ajax
选项的processResults
部分附加一个选项,但不知道如何获取实际搜索的字词。
编辑:这个问题在 3.5.2 及以下版本中可以解决,但我使用的是 4.0。
【问题讨论】:
Select2 dropdown but allow new values by user? 的可能重复项 【参考方案1】:我将用一个草率的 hack 来回答我自己的问题,现在可以解决这个问题......这似乎在 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 中移动到其他地方,尚未找到。
【讨论】:
以上是关于向 Select2 AJAX 控件添加搜索词选项的主要内容,如果未能解决你的问题,请参考以下文章