使用jQuery,我如何找到哪个键被按下时,我绑定到按键事件?

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

我想在按下ENTER键时触发提交。

(更新)

尽管我自己找到了(或者更好的:一个)答案,但似乎还有变化的空间;)

keyCode和它之间有区别吗?特别是如果我只找ENTER,它永远不会是unicode键?

是否有些浏览器提供一种属性,而其他浏览器提供另一种?


当前回答

好吧,我瞎了:

e.which

将包含键的ASCII码。

参见https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which

其他回答

好吧,我瞎了:

e.which

将包含键的ASCII码。

参见https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which

试试这个:

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

我做的最简单的方法是:

$("#element").keydown(function(event) {
    if (event.keyCode == 13) {
        localiza_cep(this.value);
    }
});

使用事件。关键和现代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文档

支持的浏览器

该事件。keyCode和事件。不推荐使用。参见上面的@Gibolt答案或查看文档:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent

事件。应该使用Key

按键事件也已弃用: https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_event