Используя поле множественного выбора Select2, я загружаю страницу без «нет». Затем, когда пользователь выполняет поиск в поле ввода, функция на основе Ajax запускается на keyUp, возвращая каждый соответствующий результат внутри тега. Эта часть работает как задумано.
Проблема возникает, когда пользователь выполняет второй поиск, чтобы найти новые значения. Вместо поиска по функции, основанной на AJAX, это поле теперь позволяет клиенту выполнять поиск только по уже загруженным результатам. На самом деле кажется, что я вообще не могу использовать поле ввода для вызова функции, выполняющей что-либо с помощью события нажатия клавиши.
Есть ли у кого-нибудь обходной путь, как я могу продолжать поиск с помощью AJAX вместо поиска по существующие результаты?
Страница поиска: (Здесь я загружаю. js AJAX -функцию) (Класс: select2-search__field; это класс, сгенерированный Select2 для поля ввода. При втором поиске я даже не могу запустить функцию «Alert ();» в событии Keydown. Казалось бы, она не запускает функцию searchRequestTimer () во второй раз. Ранее я использовал этот набор функций на обычном поле ввода без Select2, и функции работают одинаково каждый раз).
$(document).ready(function(){
searchRequestTimer(".select2-search__field","#city-search");
});
Форма существует и на этой странице:
<div class="form-group">
<label>City, region, etc.</label>
<select class="js-example-basic-multiple w-100" id="city-search" multiple="multiple" name="city">
<!-- nothing in here as the page loads -->
</select>
</div>
AJAX -функция
function searchRequestTimer(field,outputField,timer = 150){
let typingTimer;
$(field).on('keyup', function () {
clearTimeout(typingTimer);
typingTimer = setTimeout(function () {
SDK_query_search( /* A function to get search values */
"targeting",
"FB",
getAttributeValue(outputField,"name"),
getAttributeValue(field,"value"),
outputField,
field
);
}, timer);
});
$(field).on('keydown', function () {
clearTimeout(typingTimer);
});
}