web-dev-qa-db-ja.com

OnKeyUp JavaScript時間遅延?

こんにちは再びマスターズオブザウェブ:)今、私は新しい愚かな質問を持っています、そして私は私を許すことを求めています。私はこの解決策についてどこでも読みましたが、私に役立つものが見つかりませんでした。

私は持っています:

<input name="domain" type="text" id="domain" onKeyUp="javascript:chk_me();">

私が求めているのは、ボタンが押された後にチェックしないようにする方法ですが、1000ミリ秒のキーボードが非アクティブであると言った後ですか?

25
Spoonk

これを試して:

var timer;
function chk_me(){
   clearTimeout(timer);
   timer=setTimeout(function validate(){...},1000);
}

このようにして、キーが押されるたびに、タイムアウトが削除され、再度設定されます。

36
mck89

グローバルなしの別のアプローチ:

var typewatch = function(){
    var timer = 0;
    return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
    }  
}();

使用法:

JavaScriptを介してイベントを添付する:

window.onload = function () {
    document.getElementById('domain').onkeyup = function() {
        typewatch(function(){alert('Time elapsed!');}, 1000 );
    };
};

または、例のようにインラインイベントハンドラー(あまり推奨されない)を使用します。

<input type="text" name="domain" id="domain"
   onKeyUp="typewatch(function(){alert('Time elapsed!');}, 1000 );"/>

デモを試してください ここ

16
CMS

本当に便利な投稿です!

関数プロパティを使用した、グローバルを使用しない別のアプローチ:

function chk_me(){
   if(typeof timer !== undefined){
     clearTimeout(this.timer);
   }
   this.timer=setTimeout(function validate(){validate(...)},1000);
}
0
PatrikJ