将多个键绑定到按键事件
我目前正在使用此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)。