2011-01-30 13 views
5

私は、テキスト入力用の自動完成のスクリプトを構築しています。 複数の不要なajax呼び出しを避けるために、ユーザーが1秒間テキストを入力しなくても、ajax呼び出しを開始したいと思います。そうすれば、押されたすべてのキーのオーバーヘッドコールを節約できます。どのようにjQueryを使ってこれを達成できますか?よりよい文書化 - - doTimeoutプラグインjQueryのキー入力で遅延ajaxコール

おかげで、

ジョエル

+0

参考のために、またはあなたは車輪を再発明しませんので、jqueryuiのオートコンプリートプラグインは優れており、この正確な機能を持っています(もちろんオプションです。 ... – davin

答えて

2

このようなことを試すことができます。私はまだ上で遊んでいない。ただプレーンjsを使用しています。

var keyUpTime = 1000; // 1 sec 
var keyUpTimeout = null; 
$('input[type=text]').keyup(function(e) { 
    clearTimeout(keyUpTimeout); 
    keyUpTimeout = setTimeout(function() { sendAjax(); }, keyUpTime); 
}); 
function sendAjax() { 
    alert('Send it!'); 
} 
+4

グローバルなスコープを 'keyUpTime'と' keyUpTimeout'で汚染しています – ThiefMaster

+0

コンテキストメニューで右クリックして[ペースト]を選択すると、キーイベントがトリガされません。 – Fred

2

これには別のjqueryプラグインがあります。それは私のためにうまく動作しますa link

関連する問題