3

我有一个用于搜索(远程数据)的 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
});
4

1 回答 1

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
});
于 2016-02-07T02:12:54.843 回答