0

フィルタとして入力フィールドがあります。キーアップのたびに、彼は関数を呼び出してinput.val()を送信し、結果をテーブルに表示します。これは正常に機能します。しかし、私が「stackoverflow」という名前を入力している場合、彼は13回投稿します。彼が投稿した3秒間入力がない場合は、それが必要です。

(デフォルトの関数ではなく)の関数があると思いました。そして、オートコンプリートはしたくありません。

HTML:

<input type="text" id="filter" />

JavaScript:

$(document).ready(function(){
    $("#filter").keyup(function(){
        console.log('POST');
    });
 });

jsfiddle

遅延は「遅延」するだけなので、遅延は必要ありません。

4

2 に答える 2

2

これを実現するには、ネイティブJavascript関数clearTimeoutおよびsetTimeoutを使用できます。

$(document).ready(function(){
    var filterTimeout = null;
    $("#filter").keyup(function(){
        if (filterTimeout != null)
            window.clearTimeout(filterTimeout);
        filterTimeout = window.setTimeout(function() { console.log('POST'); }, 3000);
    });
 });
于 2013-01-14T13:50:41.633 に答える
0

jQueryスロットル/デバウンスプラグインをチェックしてください

それはまさにあなたが望むことをします

$('input').keyup($.debounce(3000, function() { /* Post comes here */ }));
于 2013-01-14T13:50:00.240 に答える