Страницы

Поиск по вопросам

вторник, 6 ноября 2018 г.

Запуск функции после setTimeout() [дубликат]

На данный вопрос уже ответили: Начало выполнения функции по таймеру бездействия 1 ответ Есть строка поиска. Хочу чтобы при окончании ввода в строку через секунду запускалась(1 раз) функция. Есть код:
$('.block input[name=search]').on("input", function () { setTimeout(findUser, 1000);
function findUser() { alert("Hello"); }
})
Код работает неправильно. Он запускает функцию столько раз сколько я нажму, а мне нужно при окончании ввода и 1 раз. Если есть свои варианты кода то пожалуйста


Ответ

Для того, чтобы таймер срабатывал один, предыдущий таймер должен быть остановлен с помощью функции clearTimeout
Для этого нужно сохранить предыдущий таймер в переменную:
var timer = null; $('.block input[name=search]').on("input", function () { clearTimeout(timer); timer = setTimeout(findUser, 1000);
function findUser() { alert("Hello"); }
})

Комментариев нет:

Отправить комментарий