2012-04-13 6 views

答えて

1

、そのcustom.jsファイル内で、あなたのために役立つかもしれないコードのビットです。それはユーザーのキーストロークの "konami"コードを聞きます。下記の変数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> 
+1

あなたのアプローチでは、2回のキー入力の間に経過した時間はチェックされません。 –

+0

@JanHančič最後の段落を参照してください:コードサンプルが来ます。 – Sampson

+0

私はダウン投票を削除しました(その部分はあなたがダウン投票したときにそこになかった):) –

1

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

擬似コードで

:jQuery.com自体に

last_timestamp = 0 
onkeyup() { 
    if key == backspace { 
    if now() - last_timestamp <= 1 { 
     // execute code 
     last_timestamp = 0 
    } 
    else { 
     last_timestamp = now() 
    } 
    } 
} 
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; 
    } 
});​ 

FIDDLE

関連する問題