22

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

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

キーアップごとに setTimeOut() のような関数を使用する必要があると思いますが、方法がわかりません...簡単な例を教えてください。

私の悪い英語でごめんなさい:)

これが私がやろうとしていたことです:

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

3 に答える 3

42
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);
});
于 2012-05-09T16:26:24.113 に答える
7

あなたは基本的にそこにいます。彼らが別の文字を入力した場合は、タイマーをクリアする必要があります。それ以外の場合、入力を続けるかどうかに関係なく、コールバックは 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 コードを配置します。

于 2012-05-09T16:45:08.130 に答える
0

onchange イベントでこれを行う場合、時間間隔のチェックを行う必要はないと思います。入力を完了してフォーカスを変更するたびに。それはあなたのために onchange イベントをトリガーします

$("input").onchange(function()
{
   //extract database info
}
于 2012-05-09T17:19:27.707 に答える