У меня есть элемент select
с примерно 15000 опциями (выбор заполняется вызовом базы данных).Select2 (версия 4.0.6) используется для элемента, чтобы разрешить фильтрацию.Тем не менее, поскольку такое большое количество параметров на странице - не самая лучшая идея, я хочу реализовать ограниченные вызовы AJAX.
Ограниченным, я имею в виду, что я хочу, чтобы AJAX запускался, если пользователь печатает всрок от 3 до 5 символов.Если после этого пользователь продолжает печатать, включается обычный фильтр 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?