私の知る限り、あなたはあなたが望むことをすることができません。同時に押すことができる唯一のキーは、ctrl、shift、およびaltです。
$(document).keydown(function(e){
var ctrl = e.ctrlKey,
shift = e.shiftKey,
alt = e.altKey,
altGr = e.altGraphKey,
code = e.keycode || e.which;
if(code==='65' && ctrl){
//Ctrl+A
}
if(code==='65' && shift){
//Shift+A
}
if(code==='65' && alt){
//Alt+A
}
if(code==='65' && altGr){
//AltGr+A
}
});
ただし、この例がすべての主要なブラウザで機能するかどうかはわかりません(Chrome、Firefox、Safari、そしておそらくOperaとIEで機能します)。
もう1つの方法は、@ MrOBrianが言ったことを実行し、押されたキーを配列に保存することです。
var keys = [];
$(document).keydown(function(e){
var key = e.keyCode || e.which;
if(keys.indexOf(key)===-1)
keys.push(key);
if(keys[0]===65 && keys[0]===66){
//A and B pressed, respectively
}
if(keys.indexOf(67)!==-1 && keys.indexOf(68)!==-1){
//C and D pressed, the order doesn't matter
}
});
$(document).keyup(function(){
keys = [];
});
このように、キーを押すたびに、そのキーはkeys
配列に保存され(すでに保存されている場合を除く)、プログラムは押されたキーをチェックし、最後に、ユーザーが「マウスを押す」と、配列は次のようになります。リセットされます。
注:押されたキーがそれぞれAとBであると仮定しましょう。これらがこの順序で押されたかどうかを確認する場合は、次の条件を使用する必要があります。
if(keys[0]===65 && keys[0]===66){
//A and B pressed, respectively
}
ただし、それらが押されたかどうかを確認したいだけで、順序が重要でない場合は、keys
次の条件で、それらが配列内にあるかどうかを確認する必要があります。
if(keys.indexOf(65)!==-1 && keys.indexOf(66)!==-1){
//A and B pressed, the order doesn't matter
}