Ограничить AJAX звонки в select2 - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть элемент 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?

...