如何用jquery检查是否按下组合键?
假设我只想在同时按下向上和向下箭头键的情况下启动警报。
现在我只是使用:
switch (event.which) {
case 40:
alert('down');
break;
case 38:
alert('up');
break;
case 37:
alert('left');
break;
case 39:
alert('right');
break;
}
答案 0 :(得分:5)
设置标志。当一个键关闭时,如果它是某个keyCode,请设置标志myKeyIsDown = true
。当它出现时,将标志设置为false。当你的第二个键关闭时,如果它是某个keyCode并且你的myKeyIsDown
标志为真,那么你有两个键。
答案 1 :(得分:3)
我觉得这很有用:How to detect simultanious two key press from the Javascript ?。
这是纯粹的JavaScript。您还可以更改第一个方法以使用event.which
。
没有旗帜。
修复:对于使用向上+向下+ R 的第一种方法,您应该使用此方法:
function KeyPress(e) {
for (i = 0; i < KPAry.length; i++) {
if (e == KPAry[i]) {
return;
}
} // for (i=0;i<KPAry.length;i++)
if (e != 17 && e != 18 && e != 82 && e!=38 && e!=40) {
KPAry = new Array();
} else {
KPAry[KPAry.length] = e;
}
if (KPAry.length == 3) {
if (KPAry[0] == 17 && KPAry[1] == 18 && KPAry[2] == 82) {
alert('Keys Pressed\nctrl+alt+R ');
} else if (KPAry[0] == 38 && KPAry[1] == 40 && KPAry[2] == 82) {
alert('Keys Pressed\nup+down+R ');
}
KPAry = new Array();
} // if (KPAry.length==3)
} // function KeyPress(e)
答案 2 :(得分:2)
答案 3 :(得分:1)
在另一个答案的后续跟踪中有一个建议,你可能想要在第二次按键时停止事件的级联,这可以这样做:(当然把你的逻辑放在一起)
/* handle special key press */
function checkCptKey(e)
{
var shouldBubble = true;
switch (e.keyCode)
{
// user pressed the Tab
case 9:
{
$(".someSelect").toggleClass("classSelectVisible");
shouldBubble = false;
break;
};
// user pressed the Enter
case 13:
{
$(".someSelect").toggleClass("classSelectVisible");
break;
};
// user pressed the ESC
case 27:
{
$(".someSelect").toggleClass("classSelectVisible");
break;
};
};
/* this propogates the jQuery event if true */
return shouldBubble;
};
/* user pressed special keys while in Selector */
$(".mySelect").keydown(function(e)
{
return checkCptKey(e);
});