2010-11-21 9 views
2

私はいくつかの要素のリストを表示するhtmlページがあると言います。ユーザーが要素をフィルタリングできるテキストボックスがあります。表示された要素を更新するには、フィルタ値と一致する要素を取得するためにajax呼び出しを行う必要があります。フィルタテキストボックスに最後の文字が入力されてから2秒後にajax呼び出しを実行します。私はsettimeoutについて知っていますが、2秒間の遅延を2倍の遅延時間内に別の文字を入力すると、遅延をリセットしたい場合、「滑り」にします。それについてどうすればいいのですか?スライド遅れのある関数を実行する

ありがとうございます。

答えて

3

setTimeoutはあなたのKeyDownイベントのハンドラは、これを行うことができますので、clearTimeout経由でタイマーをキャンセルするために使用できるハンドル(番号)を返します:私たちはtimerHandleをクリアしている

var timerHandle = 0; 
function handler() { 
    // Clear the previous timer if it hasn't already happened 
    if (timerHandle != 0) { 
     clearTimeout(timerHandle); 
    } 

    // Call `tick` in 2 seconds or so 
    timerHandle = setTimeout(tick, 2000); 
} 
function tick() { 
    // The timer has gone off, clear the handle 
    timerHandle = 0; 
} 

注意タイマー機能が実行されます。さもなければ、次のkeydownは、もはや存在しないタイマーを取り消そうとします。私は不平を言うブラウザには一度も会ったことがありませんが、私は運が一度もプッシュしていません...

+0

+1、ありがとうたくさん:-) –

+0

私はそれを可能にするとすぐに受け入れます。 –

+0

@Klaus :-)心配しなくても助かりました。 –

関連する問題