2016-05-22 8 views
1

誰かがJavascriptで「+1」と「-1 enter」キーコードを検出する方法を知っていますか? キーコードを1回ではなく1回押すと検出したいと思います。Javascript press keycode "+1 enter"と "-1 enter"

しかし、私が次のコードを書きましたが、何の効果もありませんでした。

// +1 enter 
$(document).keydown(function(e) { 
    if (e.keyCode == 107 && e.keyCode == 49 && e.keyCode == 13) { 
    window.alert("+1"); 
    } 
}); 

// -1 enter 
$(document).keydown(function(e) { 
    if (e.keyCode == 109 && e.keyCode == 49 && e.keyCode == 13) { 
    window.alert("-1"); 
    } 
}); 

あなたのプロのコメントは、

+0

あなたは '&|'ではなく '||'を使うべきです。どのようにして1つのキータイプを同時に3つの異なる文字にすることができますか? –

+0

+、1、enter、 - 、1を1つずつ入力するが、短時間で入力することを意味する – CKH

+0

あなたが探しているもの(キーシーケンス)を実装しているライブラリにアクセスしているか、バニラJSとjQuery? – jdphenix

答えて

0

これを達成するには、以前押されたキーを追跡する必要があります。次のことを試してみてください。

// These are just used to display the result in the DOM--you can delete this 
 
var $keyCodes = document.getElementById('key-codes'); 
 
var $result = document.getElementById('result'); 
 

 
// Used to keep track of your key presses 
 
var trackKeyCodes = (function() { 
 
    // Keep a private array of key codes to track 
 
    var keyCodes = []; 
 
    // This is the actual function that gets stored in trackKeyCodes 
 
    return function(keyCode) { 
 
    // Only store the last 3 key codes 
 
    if (keyCodes.length === 3) keyCodes.splice(0, 1); 
 
    // Add the next key code 
 
    keyCodes.push(keyCode); 
 
    // This just displays it in the DOM for you to see--you can delete this 
 
    $keyCodes.innerHTML = keyCodes.join(', '); 
 
    return keyCodes; 
 
    }; 
 
})(); 
 
// Used to actually check the key presses 
 
var checkKeyCodes = function(keyCodes, first, second, third) { 
 
    return keyCodes[0] === first && keyCodes[1] === second && keyCodes[2] === third; 
 
}; 
 

 
// +1 enter 
 
$(document).keydown(function(e) { 
 
    var keyCodes = trackKeyCodes(e.keyCode); 
 
    if (checkKeyCodes(keyCodes, 107, 49, 13)) { 
 
     $result.innerHTML = '+ 1'; 
 
    } else if (checkKeyCodes(keyCodes, 109, 49, 13)) { 
 
     $result.innerHTML = '- 1'; 
 
    } else { 
 
     $result.innerHTML = ''; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p> 
 
KeyCodes: <span id="key-codes">-</span> 
 
</p> 
 
<p> 
 
Result: <span id="result">-</span> 
 
</p>

+0

ありがとうございます。しかし、コード "window.alert"はあなたのコードのどこに置かれるべきですか?また、あなたのコードはどういう意味ですか? – CKH

0

あなたは、次の機能を使用できます。

$(document).keydown((function() { 
    var codes = []; 
    return function(e) { 
     if (e.keyCode == 107 || e.keyCode == 109 || e.keyCode == 49 || e.keyCode == 13) { 
      codes.push(e.keyCode); 
      if (codes.toString().indexOf('107,49,13') >= 0) { 
       alert('+1'); 
       codes.splice(0, codes.length); 
      } else if (codes.toString().indexOf('109,49,13') >= 0) { 
       alert('-1'); 
       codes.splice(0, codes.length); 
      } 
     } else { 
      codes.splice(0, codes.length); 
     } 
    }; 
})()); 

は基本的に、あなただけの以前に押されたキーを格納するいくつかの方法を見つける必要があり、その後、それらをチェックします新しいキーが押される度にこの場合、IIFEのクロージャ内の変数に格納されます。

JSFiddle

+0

JSFiddleのあなたのコードは動作しません。 – CKH

+0

@CKHはい、そうですが、右下のボックスをクリックし、数字キー「+」と「 - 」キーを使用しなければなりません。 –

+0

いいえ、num lockを押して+または - 、1を押して1つずつ入力すると、警告ウィンドウは表示されませんでした。 – CKH

関連する問題