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(). Как его удалить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.