Select2 - 在输入时启动ajax搜索

时间:2016-01-28 06:58:36

标签: javascript jquery ajax jquery-select2 select2

我有一个用于搜索的Select2输入(远程数据)。 目前,它的工作原理如下:

当用户输入1个字符时,我们会自动触发搜索

现在,有趣的部分:

我需要添加以下行为:

当用户专注于此输入并按下Enter按钮时,我需要触发一个字符的搜索' *'但是没有在输入中实际写入该字符。

它应该只发送带有字符*的搜索请求,但输入应保持为空。

是否可以在不搞乱Select2代码的情况下实现这一目标?

我的代码:

$("#account").select2({
    language: "en",
    ajax: {
        url: window.urls.ajax_account_search,
        dataType: 'json',
        delay: 500,
        data: function(params){
            console.log(params);
            return {
                query: params.term,
                page: params.page
            }
        },
        processResults: function(data, params){
            return {
                results: data.items
            }
        },
        cache: true
    },
    escapeMarkup: function(m) { return m; },
    templateResult: formatSearchResult,
    templateSelection: formatSearchSelection,
    minimumInputLength: 1
});

1 个答案:

答案 0 :(得分:0)

您可以在没有搜索字词时发送*,而不是在输入时触发搜索(发送*)。这也意味着放弃minimumInputLength要求,但这似乎符合您的要求。

$("#account").select2({
    language: "en",
    ajax: {
        url: window.urls.ajax_account_search,
        dataType: 'json',
        delay: 500,
        data: function(params){
            return {
                query: params.term || '*', // send * if there is no term
                page: params.page
            }
        },
        processResults: function(data, params){
            return {
                results: data.items
            }
        },
        cache: true
    },
    escapeMarkup: function(m) { return m; },
    templateResult: formatSearchResult,
    templateSelection: formatSearchSelection
});