私は、テキスト入力用の自動完成のスクリプトを構築しています。 複数の不要なajax呼び出しを避けるために、ユーザーが1秒間テキストを入力しなくても、ajax呼び出しを開始したいと思います。そうすれば、押されたすべてのキーのオーバーヘッドコールを節約できます。どのようにjQueryを使ってこれを達成できますか?よりよい文書化 - - doTimeoutプラグインjQueryのキー入力で遅延ajaxコール
おかげで、
ジョエル
私は、テキスト入力用の自動完成のスクリプトを構築しています。 複数の不要なajax呼び出しを避けるために、ユーザーが1秒間テキストを入力しなくても、ajax呼び出しを開始したいと思います。そうすれば、押されたすべてのキーのオーバーヘッドコールを節約できます。どのようにjQueryを使ってこれを達成できますか?よりよい文書化 - - doTimeoutプラグインjQueryのキー入力で遅延ajaxコール
おかげで、
ジョエル
はdebounceプラグインや使用してください。
このようなことを試すことができます。私はまだ上で遊んでいない。ただプレーン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!');
}
グローバルなスコープを 'keyUpTime'と' keyUpTimeout'で汚染しています – ThiefMaster
コンテキストメニューで右クリックして[ペースト]を選択すると、キーイベントがトリガされません。 – Fred
これには別のjqueryプラグインがあります。それは私のためにうまく動作しますa link
参考のために、またはあなたは車輪を再発明しませんので、jqueryuiのオートコンプリートプラグインは優れており、この正確な機能を持っています(もちろんオプションです。 ... – davin