jquery - jQuery Event Keypress: 哪个key按下了?

  显示原文与译文双语对照的内容

对于 jQuery,如何在绑定到keypress事件时发现按下了哪个键?


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

我想触发提交当进入按。

[Update]

即使我找到了( 或者更好的: 回答自己,似乎有一些变化的空间;)

有什么区别键码和——特别是如果我只是寻找进入,它永远不会成为一个unicode钥匙?

某些浏览器提供了一个属性,另一些提供了另一个属性?

时间:

如果你正在使用 jQuery UI,你就有了常用键代码的翻译。 在 ui/ui/ui.core.js: 中


$.ui.keyCode = { 
. . .
 ENTER: 13, 
. . .
};

在 tests/simulate/jquery.simulate.js 中也有一些翻译,但是在核心JS库中找不到任何内容。 注意,我只是 grep'。 也许还有别的方法来去掉这些神奇数字。

你还可以使用 String.charCodeAt 和。fromCharCode:


>>> String.charCodeAt('r') == 13
true
>>> String.fromCharCode(13) == 'r'
true

。本示例防止表单提交( 通常是在捕获击键 #13): 时的基本意图)


$('input#search').keypress(function(e) {
 if (e.which == '13') {
 e.preventDefault();
 doSomethingWith(this.value);
 }
});

这可能是更好和全面的一个 !

真正的跨浏览器的方式:


if (!event.which && ((event.charCode || event.charCode === 0)? event.charCode: event.keyCode)) {
 event.which = event.charCode || event.keyCode;
}

编辑:这只对 IE 有效。。

我意识到这是一个旧的帖子,但是有人可能会发现。

按键事件被映射,因此,你也可以使用键值来使它变得更具可读性。


$(document).ready( function() {
 $('#searchbox input').keydown(function(e)
 {
 setTimeout(function ()
 { 
//rather than using keyup, you can use keydown to capture 
//the input as it's being typed.
//You may need to use a timeout in order to allow the input to be updated
 }, 5);
 }); 
 if(e.key =="Enter")
 {
//Enter key was pressed, do stuff
 }else if(e.key =="Spacebar")
 {
//Spacebar was pressed, do stuff
 }
});

下面是一个带有映射密钥的备忘单,我从这个博客中得到了 enter image description here

检查这个出色的热键插件,它支持按键组合:


$(document).bind('keydown', 'ctrl+c', fn);


$(document).ready(function(){
 $("#btnSubmit").bind("click",function(){$('#'+'<%=btnUpload.ClientID %>').trigger("click");return false;});
 $("body, input, textarea").keypress(function(e){
 if(e.which==13) $("#btnSubmit").click();
 });
});

希望这对你有帮助 !

好吧我是瞎子

 
e.which

 

将包含键的ASCII代码。

参见 https://developer.mozilla.org/En/DOM/Event.which web

...