2

私が抱えている問題はdoSearch()、ユーザーが私のフィールドで少なくとも 100 ミリ秒入力を停止した後に私の -methodを呼び出す必要がある検索機能$("input#q)です。

この回答setInterval()のロジックを使用してこれを達成しようとしましたが、をインクリメントする を設定/設定解除する場所に行き詰まっていますidleTime

var idleTime = 0;

$("input#q").keyup(function() {
  idleTime = 0;
  idleInterval = setInterval(function() {
    idleTimeIncrement();
  }, 25);
});

function idleTimeIncrement() {
  idleTime += 25;
  if (idleTime >= 100) {
    doSearch($("input#q").val());
  }
}

Firebug コンソールに表示されるエラーは次のとおりです。

再帰が多すぎる。

だから私は自分のコードに無限ループがあると思います... ;-)

4

1 に答える 1

9

新しいタイマーを開始するときは、タイマーをリセットする必要があります。これが私がすることです:

var timer = null;
$('input#q').keyup(function() {
    if (timer) {
        clearTimeout(timer);
    }
    timer = setTimeout(function() {
        doSearch($('input#q').val())
    }, 100);
});
于 2012-05-31T09:37:07.727 に答える