私は次のように1つのバックスペースキーが押されたことを検出できることを知っています。
$("#myelement").bind ("keyup", function(event) {
if (event.keyCode==8) {
alert ("Backspaced!!!");
}
});
ダブルクリックのように、1秒以内に発生するダブルバックスペースをどのように検出しますか?
私は次のように1つのバックスペースキーが押されたことを検出できることを知っています。
$("#myelement").bind ("keyup", function(event) {
if (event.keyCode==8) {
alert ("Backspaced!!!");
}
});
ダブルクリックのように、1秒以内に発生するダブルバックスペースをどのように検出しますか?
バックスペースが最後に押された時刻を追跡する必要があります。次に、イベントハンドラーが呼び出されるたびに、その値をチェックして、1秒未満であるかどうかを確認します。それが、ダブルバックスペースプレスを取得した場合です。そうでない場合は、最後のバックスペース時間の値を現在の時間にリセットし、コードを実行しません。
擬似コード:
last_timestamp = 0
onkeyup () {
if key == backspace {
if now () - last_timestamp <= 1 {
// execute code
last_timestamp = 0
}
else {
last_timestamp = now ()
}
}
}
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>
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;
}
});