限制select2中的AJAX调用

时间:2018-12-21 07:45:41

标签: jquery jquery-select2

我有一个select元素,带有大约15000个选项(select被数据库调用填充)。在元素上使用Select2(版本4.0.6)以进行过滤。但是,由于在页面上具有这么多的选项并不是最聪明的主意,因此我想实现有限的AJAX调用。

受限制,我的意思是我希望用户输入3到5个字符长的字词时触发AJAX。如果用户此后继续输入,则普通的select2过滤器将启动,并且不会进行AJAX调用。

因此,我尝试使用以下方法:

$('#clientFilter').select2({
    ajax: {
        url: "ajax/ajax-filter.php",
        type: "post",
        dataType: "json",
        delay: 250,
        cache: false,
        minimumInputLength: 3,
        maximumInputLength: 5,
        data: function(params) {
            if(params.term) {
                if(params.term.trim().length >=3 && params.term.trim().length <=5) {
                    var query = {
                        selText: params.term
                    }
                    return query;
                }
            }
        },
        processResults: function(data) {
            return {
                results: console.log(data)
            }
        }
    }
});

但是这不能按我预期的那样工作-AJAX实际上已触发,这是我不想要的。当然,我可以检查服务器上的输入长度,但是如果不满足原始条件(3-5个字符),我不希望将任何内容传递给服务器。

我做错了什么,从这里应该朝哪个方向走?我是否必须将AJAX放在select2的初始化中,还是可以将其转换为函数,然后在select2初始化之外调用该函数?

0 个答案:

没有答案