Есть строка поиска. Хочу чтобы при окончании ввода в строку через секунду запускалась(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");
}
})
В первую очередь, необходимо определиться с понятием окончание ввода
.
Допустим, это отсутствие ввода некоторое время.
Тогда мы можем отменять старое ожидание и запускать новое при каждом событии ввода.
Получится что-то вроде:
var th;
$('.block input[name=search]').on("input", function () {
if (th) clearTimeout(th);
th = setTimeout(findUser, 1000);
function findUser() {
alert("Hello");
th = null;
}
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите, как бы начать заново игру после того, как ракетка промахивается по мячу
У меня вебпак не собирает проект, написанный с фичами ES6 и реактомКонфиг вебпака такой:
У меня, похоже, конфликтуют react-scripts и webpackИмеется небольшой проект с такими конфигами: