2012-05-09 7 views
17

入力キーアップイベントでデータベース情報を抽出する簡単なスクリプトをコーディングしています。最後のキーがjqueryの最後のキーの後でのみキーアップ

問題は、ユーザーがキーを押すたびにkeyupイベントが常に繰り返されることです。最後に押されたキーを押した後でのみ動作させるにはどうすればいいですか?

私は、すべてのキーアップの後にsetTimeOut()のような関数を使うべきだと思いますが、どうしたらいいのか分かりません。

私の悪い英語のため申し訳ありません

:)

ここでは、私がやろうとしたものである。

$("input").keyup(function() 
{ 
    var timer=setTimeout(function() { 
    }, 1000); 
    if(!timer) 
    { 
     //do .post ajax request 
    } 
}); 

答えて

36
var timer; 

$("input").on('keyup', function() { 
    clearTimeout(timer); //clear any running timeout on key up 
    timer = setTimeout(function() { //then give it a second to see if the user is finished 
     //do .post ajax request //then do the ajax call 
    }, 1000); 
}); 
+0

素晴らしい答え、ありがとう! – Zippie

6

あなたは基本的にそこにいます。タイマーをクリアする必要があるのは、別の文字を入力した場合だけです。それ以外の場合は、入力を続けているかどうかに関係なく、1000ミリ秒後にコールバックが実行されます。このような

何か作業をする必要があります:私はちょうど警告を持って

$("input").keyup(function (event) 
{ 
    var self = this; 
    if (self.timer) 
     clearTimeout(self.timer); 

    self.timer = setTimeout(function() 
    { 
     self.timer = null; 
     alert(self.value); 
    }, 1000); 

}); 

は、あなたが戻ってサーバーに書き込むために、あなたのAjaxコードを置くところ。

0

あなたがonchangeイベントでこれを行うと、時間間隔のチェックをする必要はありません。あなたの入力を完了し、フォーカスを変更するたびに。それはあなたの為替イベントを誘発する

$("input").onchange(function() 
{ 
    //extract database info 
} 
関連する問題