4

だから私はテキストボックスのjQueryですべてkeyupのイベントでAJAXリクエストを呼び出しています:paste

 $("#server-label").bind("keyup paste", function() {
     $.ajax()...
 });

問題は、ユーザーがキーをすばやく押すと、AJAX 要求が多すぎることです。AJAX リクエストを呼び出す前に、ユーザーが入力を少し (たとえば 500 ミリ秒) 停止するまで待機する最善の方法は何ですか。基本的に、キーまたは貼り付けイベントが 500 ミリ秒発生しなくなるまで、AJAX リクエストを作成しないでください。

ありがとう。

4

1 に答える 1

13

それを追跡するために変数を使用setTimeout()してみてください:timer

var t;
$("#server-label").on("keyup paste", function() {
    clearTimeout(t);
    t = setTimeout(function() {
        $.ajax({/*[...]*/});
        //...
    }, 500);
});

スロットルまたはデバウンスを使用することもできますが、コードを関数オブジェクトまたは文字列内にラップして関数に渡す場合は必要ないと思いますsetTimeout()

于 2012-05-05T00:34:13.883 に答える