我有一个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初始化之外调用该函数?