Javascript: Не работает сброс таймера (setTimeout и clearInterval)
От: Submitter  
Дата: 05.02.15 13:46
Оценка:
Есть поле input, при вводе в которое должен появляться всплывающий список с вариантами, но не сразу, а спустя 3 секунды после того, как пользователь перестал вводить в input. Делаю так:

var timer; // ID таймера

$('input#load').keydown(function() {
clearInterval(timer); // удаляем предыдущий таймер
timer = setTimeout(onShowGeoList, 3000); // устанавливаем новый таймер и запоминае его
}

function onShowGeoList() {

clearInterval(timer); // тут еще раз сбрасываем на всякий случай

// тут выводим всплывающий список с вариантами

}

Проблема в том, что при установки setTimeout сразу же запускается функция onShowGeoList (а должна ждать 3 секунды). 2-ая проблема: не работает clearInterval: если пользователь продолжает набирать, то должен срабатывать сброс таймера до тех пор, пока пользователь не перестанет набирать текст. Таймеры вообще не удаляются, они просто встают в очередь и при каждом нажатии идет вызов функции onShowGeoList(). Как его удалить?
Re: Javascript: Не работает сброс таймера (setTimeout и clearInterval)
От: vsb Казахстан  
Дата: 05.02.15 14:06
Оценка: 9 (1) +3
setTimeout/clearTimeout
setInterval/clearInterval
Re: Javascript: Не работает сброс таймера (setTimeout и clea
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.02.15 14:10
Оценка:
Здравствуйте, Submitter, Вы писали:

http://javascript.ru/forum/events/2346-kak-vypolnit-funkciyu-s-zaderzhkojj.html
создай булеву переменную первыйЗапуск=true и меняй её в обрабочике таймера если она true и выполняй действие если она false
и солнце б утром не вставало, когда бы не было меня
Отредактировано 05.02.2015 14:14 Serginio1 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.