Не работает сброс таймера (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(). Как его удалить? |
Цитата:
P.S. В JS много чего не работает, это общеизвестный факт на этом форуме... :lol: |
Цитата:
setTimeout(function(){ alert('А вот и нет! Она ждала сколько требовалось.'); },3000); Таки работает! |
Цитата:
http://javascript.ru/setTimeout |
Часовой пояс GMT +3, время: 19:05. |