организация задержки выполнения метода на Jquery

VHS-1980
На сайте с 21.05.2010
Offline
91
2805

Всем привет. Есть часть кода:



.keyup(function(e) {
if (e.keyCode == 38 || e.keyCode == 40 || e.keyCode == 13 || e.keyCode == 27) return; // если нажата одна из вышеперечисленных клавиш, выходим
word = input.val();
if (word) { // если переменная не пуста
$.post(o.url, o.dataSend(input), function(data){ // и тут уходит запрос на сервер с дальнейшими приблудами

Т.е. при вводе текста в инпут идет отправка данных через ajax на сервер.

Что хочется - ввести задержку отправки запроса, скажем в 1 секунду, а так же сброс события, если событие keyup снова произошло, счетчик задержки снова выставить на 1 секунду.

В процурном стиле это делается по типу выставления timer = setTimeout('func', 1000) , проверкой состояния этого таймера и т.д. и т.п. А вот в синтаксисе плагина jquery я что-то теряюсь, подскажите как это описывается без вынесения кода в отдельные функции со всеми вытекающими...

C
На сайте с 04.02.2005
Offline
277
#1

Оно как бы да, но почему бы и нет, но все же зачем?

У Вас анонимная функция, а проверять состояние таймера все равно надо...

А функция вынесенная в отдельный код кушать не просит, да и код будет читаемым.

можно и :) плагин использовать :)

VHS-1980
На сайте с 21.05.2010
Offline
91
#2
Chukcha:
Оно как бы да, но почему бы и нет, но все же зачем?

У Вас анонимная функция, а проверять состояние таймера все равно надо...

А функция вынесенная в отдельный код кушать не просит, да и код будет читаемым.

можно и :) плагин использовать :)

ну если честно, то просто влом выносить, там слишком много анонимных функций ссылающихся на самих себя. За плагин спасибо, опробую.

---------- Добавлено 25.01.2013 в 19:41 ----------

вообщем решил так:

добавил объект timer в контекст плагина (o в моем варианте - это объект конструктора плагина) с значением null и


clearTimeout(o.timer)
o.timer = setTimeout(function(){
$.post(o.url, o.dataSend(input), function(data){ // отправляем запрос

}) }, 900);

по сути легко, главное с контекстом исполнения разобраться

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий