2016-11-02 5 views
0

タブキーを特定の時間間隔で何回か押した場合やタブキー基本的には、タブが押されているかどうかにかかわらず、タブキーが入力フィールド間をゆっくりと移動したいので、現在は高速に移動しています。それを行うには特定の期間にタブキーが何度も押された場合、どのように1つのタブキーだけをトリガーすることができますか?

var tab_counter = 0; 
var time_counter = 0; 

if (e.keyCode === 9) { 
    tab_counter = Number(tab_counter) + Number(1); 

    var interval = setInterval(function() { 
     time_counter++; 
     console.log(time_counter); 
     if (time_counter == 20 && tab_counter > 20) { 
      clearInterval(interval); 
     } 
    }, 60); 
} 
+0

どのようなイベントも添付しています。 keydownを使用している場合は複数取得しますが、keyupを使用すると1だけ取得します。 – Keith

+0

「デバウンシング」を検索 – Viney

+1

@Novice私はスロットルを検索しましたが、同じ効果があります。 - https://remysharp.com/2010/07/21/throttling-function-calls – dougajmcdonald

答えて

0

最善の方法は、それが引き金とはならないとき、タブが最後の引き金とpreventDefaultにされたときを追跡することです。 documentにイベントリスナーを追加すると、ユーザーがキーを押すたびにそのイベントリスナーをブロックするオプションがあります。 https://jsfiddle.net/zLsbb0kh/1/

乾杯:

は、私はあなたのソリューションを表示するために作成したこのjsfiddleをチェック!

関連する問題