2017-02-21 28 views
0

ユーザーが入力フィールドで数量を変更すると、特定のコードが起動するようにします。ユーザーが小さな上下の矢印を使用して数量を素早く増減させます。私はコードを5回発射させたくありません。だから私はタイマーを設定したい。オン・イベントが検出されると、1秒間待機するか、オン・チェンジが停止するまで待機します。その後、最新の値を取得します。jquery onchange set timeout

したがって、短時間で複数の変更を検出する方法はありません。その後、変更が発生し、x時間後に変更が発生しない場合何かをしなさい。

$("#quantity").on('change',function(){ 
    setTimeout(function(){ 
     console.log("fired"); 
    }, 1000); 
}); 

私のコードは、ちょうど解雇を延期しています。

これをどのように達成できますか?

  var timeoutId = 0;  
     object.dom.input.addEventListener('input',function() { 
      clearTimeout(timeoutId); 
      // do stuff 
      // Fire our onchange event 
       if (this.delayOnChange > 0) { 
        timeoutId = setTimeout(function() { this.onchange() }, this.delayOnChange); 
       } else { 
        this.onchange(); 
       } 
      } 
     },false); 

これは、我々が設定されているかどうかをチェックします:答えと重複する質問がここに Jquery change with delay

+0

NVMの人は、ここでの回答と重複した質問を見つけましたhttp://stackoverflow.com/questions/9424752/jquery-change-with-delay – codenoob

+0

申し訳ありませんが、あなたのコメントは私の答えを投稿した後まで表示されませんでした。多分それはとにかく助ける... – rasmeister

答えて

2

ここで私は、ユーザーが入力している間、トリガ頻繁な変更を防ぐために、入力ボックスに何をやったかだが見つかり

'delayOnchange'、および 'onchange()'イベントのトリガーを遅らせる場合に使用します。入力が変更されるたびにタイマー(clearTimeout())をリセットするので、onchangeをトリガーする前にユーザーが高速タイピングを停止するのを基本的に待っています。

+0

これも動作します。あなたがタイピングしている間はタイマーを常にリフレッシュするので、あなたのタイピング状況が良くなると思います。もう1つの質問の答えは、単に1秒待つだけでした。 10分後に受け入れます – codenoob

+0

秒は間違いなく長すぎます。私は約1/2秒以上の何かがユーザーに不快になることが分かります。ここでの利点は、状況に応じて遅延を別々に設定できることです。上下の矢印をクリックしている場合は、時間を300ミリ秒に短縮するかもしれません。もちろん、それはまた、解雇されたイベントが何をするのか、それがどのようにユーザーエクスペリエンスに影響するのかにも依存します。 – rasmeister