将搜索项选项添加到Select2 AJAX控件

时间:2015-08-10 15:12:17

标签: jquery ajax jquery-select2

我有一个使用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。

1 个答案:

答案 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中的其他位置,但尚未找到。