在jQuery中检测单个按键事件上的多个键

在jQuery中检测单个按键事件上的多个键

是否可以结合使用按键的混合物来发射单个事件?

$(document).keyup(function(e){
    if (e.keyCode == 68 && e.keyCode == 69 && e.keyCode == 86) {
        alert('oh hai');
    }});

我在Chrome中尝试过,但事件并未触发。

叫我疯了,但我正在编写一个Chrome扩展程序,并希望将DEV键一起推送到隐藏的开发人员模式。


隔江千里
浏览 358回答 3
3回答

慕田峪7331174

如果要检测的d,e和v按键均下跌的同时,你必须注意既keydown和keyup,并保持地图为down的那些的。当他们全部失败时,解雇你的活动。例如:Live copy | 资源var map = {68: false, 69: false, 86: false};$(document).keydown(function(e) {     if (e.keyCode in map) {         map[e.keyCode] = true;         if (map[68] && map[69] && map[86]) {             // FIRE EVENT         }     }}).keyup(function(e) {     if (e.keyCode in map) {         map[e.keyCode] = false;     }});我假设你不关心他们被压下的顺序(因为这可能是一种痛苦,可靠地按下),只要他们在某个时刻同时处于同一时间。

繁花不似锦

与Vega相似......但更简单var down = {};$(document).keydown(function(e) {     down[e.keyCode] = true;}).keyup(function(e) {     if (down[68] && down[69] && down[86]) {         alert('oh hai');     }     down[e.keyCode] = false;});

梦里花落0921

也许更简单的组合键会更容易?Shift + Alt + D怎么样?(您可能不应该使用Control键,因为大多数浏览器已经以某种方式解释Ctrl + D)这个代码是这样的:if(e.shiftKey && e.altKey && e.keyCode == 68){   alert('l33t!');}
打开App,查看更多内容
随时随地看视频慕课网APP