jQuery Event Keypress: какая клавиша была нажата? - PullRequest
698 голосов
/ 19 ноября 2008

С помощью jQuery, как узнать, какая клавиша была нажата при привязке к событию нажатия клавиши?

$('#searchbox input').bind('keypress', function(e) {});

Я хочу инициировать отправку при нажатии ENTER .

[Update]

Несмотря на то, что я нашел (или лучше: один) ответ сам, кажется, есть место для вариаций;)

Есть ли разница между keyCode и which - особенно если я просто ищу ENTER , который никогда не будет ключом Unicode?

Некоторые браузеры предоставляют одно свойство, а другие предоставляют другое?

Ответы [ 23 ]

2 голосов
/ 16 декабря 2011

Самый простой способ, которым я занимаюсь, это:

$("#element").keydown(function(event) {
    if (event.keyCode == 13) {
        localiza_cep(this.value);
    }
});
1 голос
/ 18 февраля 2018

Используйте event.key и современные JS!

Нет числовых кодов больше. Вы можете проверить ключ напрямую. Например, "Enter", "LeftArrow", "r" или "R".

const input = document.getElementById("searchbox");
input.addEventListener("keypress", function onEvent(event) {
    if (event.key === "Enter") {
        // Submit
    }
    else if (event.key === "Q") {
        // Play quacking duck sound, maybe...
    }
});

Документы Mozilla

Поддерживаемые браузеры

0 голосов
/ 09 февраля 2010

Попробуйте это:

jQuery('#myInput').keypress(function(e) {
    code = e.keyCode ? e.keyCode : e.which;
    if(code.toString() == 13) {
        alert('You pressed enter!');
    }
});
...