AddEventListener keyPress не будет работать

Я искал два дня для ответа на эту проблему, и ни в коем случае не превалировал.

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? Почему это не работает? И, самое главное, как я могу это исправить?

Ответ 1

Вы должны использовать строчные буквы p в keyPress

Ответ 2

Имя события должно быть keypress - small 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.charCode на MDC.

Ответ 3

Вы всегда можете использовать этот

$(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. Поэтому проверьте оба