Добрый день.
Делаю живой поиск: по мере ввода текста в строку поиска выдаются результаты из базы.
Проблема: в выдачу попадают не только результаты по итоговому слову, но и иногда вместе с ними - результаты частично введенного слова (например, при вводе слова "шуруповерт" в выдаче могут оказаться результаты по "шуруп" и "шуруповерт" в одной каше).
Прошу указать, что я делаю не так, или направить, как сделать лучше, если подход через промисы - неверный.
Упрощенный код функции:
function live_search_js() {
let text = document.forms.form__on_page_search.search.value; // значение текста в строке поиска
let search_results = document.getElementById('search_results'); // div с результатами выдачи
if(text != '') {
search_title.innerHTML = 'Результаты для <i>"' + text + '"</i>';
let url = "https://apiurl.ru/method"
query = {
title: text
}
let options = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(query)
}
let response = fetch(url, options)
.then(response => response.json())
.then(result => {
search_results.innerHTML = '';
result.forEach(function(item, index) {
search_results.innerHTML += item
})
});
}
}
Вызов функции при вводе:
$('#form__on_page_search').on('input', function() {
clearTimeout(timer);
timer = setTimeout(function() {
live_search_js();
}, 200);
});