2011-12-31 1 views
3

スタックオーバーフローのタグ検索ボックス(お気に入りのタグを追加したり、質問にタグを追加するなど)のようなajax自動完了フィールドを作成したいと思います。私はアヤックスをキーのたびに呼び出すのが常であったが、それは効率的ではないと思う。スタックオーバーフローのajaxタグ検索フィールドの背後にあるアルゴリズム

スタックオーバーフローが問題ありません。私はそれがキーがアップし、いくつかの時間が過ぎたときにそれがアヤックスを呼び出すだろうと思う。私は次にテストするためにこれらの行を書きました:

$("#a").keyup(function(){ 
    clearTimeout(c); 
    var c=setTimeout(alert("keyup and 0.5s have passed"),500); 
}) 

キーアップ後と0.5秒後に警告しますが、キーアップ時間として何度か警告します。 clearTimeout()は、実行するsetTimeout()を停止するとしますか?なぜそれは動作しません?これを行う正しい方法は何ですか?

答えて

4

cはローカル変数であり、関数が返るとすぐにその値が失われます。次のような方法を試してみてください:

var timeoutId = null; 

$("#a").keyup(function(){ 
    clearTimeout(timeoutId); 
    timeoutId = setTimeout(alert("keyup after 0.5s"),500); 
}) 
関連する問題