Показать сообщение отдельно
  #1 (permalink)  
Старый 05.02.2015, 16:47
Новичок на форуме
Отправить личное сообщение для stankhat Посмотреть профиль Найти все сообщения от stankhat
 
Регистрация: 27.03.2014
Сообщений: 3

Не работает сброс таймера (setTimeout и clearInterval)
Есть поле 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(). Как его удалить?
Ответить с цитированием