1

私は次のように1つのバックスペースキーが押されたことを検出できることを知っています。

$("#myelement").bind ("keyup", function(event) {
    if (event.keyCode==8) {
        alert ("Backspaced!!!");
    }
});

ダブルクリックのように、1秒以内に発生するダブルバックスペースをどのように検出しますか?

4

3 に答える 3

1

バックスペースが最後に押された時刻を追跡する必要があります。次に、イベントハンドラーが呼び出されるたびに、その値をチェックして、1秒未満であるかどうかを確認します。それが、ダブルバックスペースプレスを取得した場合です。そうでない場合は、最後のバックスペース時間の値を現在の時間にリセットし、コードを実行しません。

擬似コード:

last_timestamp = 0
onkeyup () {
  if key == backspace {
    if now () - last_timestamp <= 1 {
      // execute code
      last_timestamp = 0
    }
    else {
      last_timestamp = now ()
    }
  }
}
于 2012-04-13T14:15:26.143 に答える
1

jQuery.com 自体の custom.js ファイル内に、役立つコードがいくつかあります。ユーザーのキーストロークで「コナミ」コードをリッスンします。以下の変数 に示されている特定のキー シーケンスを検出すると、konami応答します。

// Hehe.
if (window.addEventListener) {
  var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
  window.addEventListener("keydown", function(e) {
    kkeys.push(e.keyCode);
    if (kkeys.toString().indexOf(konami) >= 0) 
      window.location = "http://ejohn.org/apps/hero/";
  }, true);
}

このコードが行っていないのは、最後のキー押下から現在のキー押下までの時間を追跡することです。ただし、いくつかのわずかな変更により、コードを模倣して、必要な出力も生成できることに注意してください。

<script>
  (function($){
    // Prep our variables
    var keys = [], lastEntry = 0, seq = '8,8';
    // Listen for keydown events
    $(document).keydown(function(e){
      // Push new key into keys array
      keys.push(e.which);
      // See if we need to respond
      if ( keys.toString().indexOf(seq) != -1 )
        if ( e.timeStamp - lastEntry <= 1000 )
          console.log( 'Correct keys, in the current time.' );
      // Update time of last keydown
      lastEntry = e.timeStamp;
    });
  })(jQuery);
</script>
于 2012-04-13T14:16:47.157 に答える
0
var flag=false;
$("#myelement").on("keyup", function(e) {
    if ((e.keyCode ? e.keyCode : e.which) == 8) {
        setTimeout(function() {flag=false}, 1000);
        if (flag) {
            flag=false;
            alert('backspace twice');
        }
        flag=true;
    }else{
        flag=false;
    }
});​

フィドル

于 2012-04-13T14:23:44.187 に答える