addEventListener keyPress将无法正常工作

时间:2014-06-04 02:55:02

标签: javascript jquery

我一直在寻找两天来回答这个上帝抛弃的问题,并且没有胜利。

addEventListener("keyPress", myEventHandler)不会为任何事情工作。

以下是我使用的代码:

$(document).ready(function(){
    window.addEventListener("keyPress", myEventHandler, false);
});

function myEventHandler(e){
    var keyCode = e.keyCode;
    if(keyCode == 88){
        console.log("You pressed W!");
        alert("You pressed W!");
    }
};

将我的W键捣碎后,没有任何反应。 没有警报,没有控制台消息,没有。

我做错了吗? jQuery是否会破坏addEventListener?为什么它不会起作用?而且,最重要的是,我该如何解决它?

3 个答案:

答案 0 :(得分:25)

您必须在keyPress中使用小写p

答案 1 :(得分:9)

事件名称必须为keypress - 小p

window.addEventListener("keypress", myEventHandler, false);

演示:Fiddle

除了你使用jQuery之外,使用像

这样的jQuery解决方案
//no need to use dom ready since the event is added to window
$(window).keypress(function (e) {
    //use e.which
    var keyCode = e.which;
    console.log(e, keyCode, e.which)
    if (keyCode == 88) {
        console.log("You pressed W!");
        //alert("You pressed W!");
    }
})

演示:Fiddle

event.which

  

event.which属性规范化event.keyCode和event.charCode。   建议观看event.which键盘输入键。对于   更多细节,请阅读event.charCode on the MDC

答案 2 :(得分:0)

你总是可以使用这个

$(document).keypress(function(e) {
    var keyCode = e.keyCode;

    if(keyCode == 87 || keyCode == 119){
        console.log("You pressed W!");
        alert("You pressed W!");
    }
});

是的W是87,w是119.所以检查两个