将多个键绑定到按键事件

我目前正在使用此Javascript kepypress代码在按键时触发事件:

$(document).keydown(function(e) { switch(e.keyCode) { case 39: e.preventDefault(); alert("Arrow Key"); break; case 37: e.preventDefault(); alert("Arrow Key"); } }); 

但我想知道的是,如果我可以而不是绑定一个键绑定两个键的组合。 我可以这样做:

 $(document).keydown(function(e) { switch(e.keyCode) { case 39 && 37: e.preventDefault(); alert("Arrow Key"); break; } }); 

如果你想一次检查多个键,你应该只使用一个常规键和一个或多个修改键(alt / shift / ctrl),因为你不能确定在用户的键盘上一次可以实际按下两个常规键(实际上,它们总是被按下,但是由于键盘的连接方式,PC可能无法理解它。

您可以使用e.altKey,e.ctrlKey,e.shiftKey字段来检查是否按下了匹配修饰键。

例:

 $(document).keydown(function(e) { if(e.which == 98 && e.ctrlKey) { // ctrl+b pressed } }); 

为什么不使用if而不是switch

 $(document).keydown(function(e) { if ((e.keyCode === 37) || (e.keyCode === 39)) { e.preventDefault(); alert("Arrow Key"); } }); 

您可以使用案例:

 $(document).keydown(function(e) { switch(e.which) { case 39: case 37: e.preventDefault(); alert("Arrow Key"); break; } }); 

请注意,我使用e.which而不是e.keyCode使其在所有浏览器中都能正常工作(jQuery会自动将实际包含密钥代码的属性分配给e.which)。