@madc0de

Как сделать ajax поиск с keyup задержкой для уменьшения нагрузки?

Добрый день!
Как изменить обычный код аякс поиска
$("#search").keyup(function (a) {
	LiveSearch(a, this.value)
})

чтобы искало только когда человек закончил печатать. А не при каждом нажатии клавиши.
Например если я введу быстро букву А и удалю, то он сделает 2 запроса к бд

Хотелось бы как-то более профессионально. Чтобы пока печатает аякс запросы не отправлялись
  • Вопрос задан
  • 1169 просмотров
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
простой вариант:
let timer;
$("#search").keyup(function (a) {
if(this.value.length < 3) return true; // не искать если меньше 2 букв
let keyPause = 200; // задержка в нажатии кнопок
let that = this; 
clearTimeout(timer); //сбрасываем таймер если задержка меньше заданной
timer = setTimeout(LiveSearch(a, that.value), keyPause); // запускаем поиск спаузой
})
Ответ написан
Комментировать
nyakove
@nyakove
Вместо keyup привязаться к другому событию, например change или input. Но change сработает только после потери полем фокуса. Также можно заставить поиск срабатывать по нажатию кнопки, а не сразу
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы