Таймер JavaScript, который перезапускается при включении? - PullRequest
0 голосов
/ 22 марта 2010

O, поэтому у меня есть поиск ajax 'live search', который в настоящее время запускает поиск sql (через ajax) по каждому ключу вверх.

Что бы я предпочел:

запустить поиск sql после того, как клавиша не была нажата в течение 800 миллисекунд

.

Так что я хочу иметь таймер, который запускается при включении, если таймер достигает 800 мс, то вызывается ajax, если происходит новое событие keyup, таймер перезапускается

как бы я это сделал?

Ответы [ 3 ]

5 голосов
/ 22 марта 2010
(function () {

var theTimeout;

function doSearch() {
  // Do Search
};

$('#theField').bind('keyup', function () {
  clearTimeout(theTimeout);

  theTimeout = setTimeout(doSearch, 800);
});

}())
2 голосов
/ 22 марта 2010

Есть отличный плагин TypeWatch , на который вы можете взглянуть (IIRC StackOverflow использует его для страницы Users ). Вот пример использования:

$("#textId").typeWatch({ 
    highlight: true,
    wait: 800,
    captureLength: -1,
    callback: function() {
        // changed text
    }
});
0 голосов
/ 22 марта 2010

У меня была эта проблема, мое решение было так:

var doAjax = 0
$("input#name").keyup(function(){
    doAjax++;
    setTimeout(function(){
        doAjax--;
        if(doAjax>=1){
           return;
        } 
        $.post("do_ajax", { ...

Не знаю, если это лучшее решение, но оно работает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...