检测javascript中的组合键击

时间:2011-03-08 17:07:49

标签: javascript html javascript-events

我正在创建一个包含问题的html页面(类似情况的拼图)。这个问题的答案是“Windows 7”。但我希望用户只有按下windows key followed by 7才能解决问题。我想为此创建一个JavaScript函数。我可以通过获取击键的ascii值来捕获单个按键。但是,当我尝试联合使用它不起作用时。怎么去解决这个......任何想法......

2 个答案:

答案 0 :(得分:5)

http://jsfiddle.net/loktar/MsNPW/5/

var keys = [];

document.onkeydown = function(evt){    
   var key = evt.keyCode;
   keys[key] = true;
    if(keys[91] && keys[55]){
       console.log("win7");
    } 
}

document.onkeyup = function(evt){    
   var key = evt.keyCode;
   keys[key] = false;
}

答案 1 :(得分:1)

您可以检测keydown和keyup事件,并保留已按下的键列表。将密钥添加到keydown上的列表中,并从keyup列表中删除它们。从那里你可以在适当的时候检查列表(例如在keydown事件结束时)。

请记住,每个按键都是它自己独特的事件。推送的多个键并不是自然相关的,因此您需要自己创建此列表。

我建议您使用像jQuery这样的库,并且可能有一些插件可以提供帮助。也就是说,我描述的一般概念不应该太难以实现自己。让我知道伪代码是否有助于澄清我所描述的算法。

相关问题