我有两个功能。当按下回车键时,功能正常运行,但是当按下退出键时,功能无法正常运行。退出键的正确数字是多少?
$(document).keypress(function(e) {
if (e.which == 13) $('.save').click(); // enter (works as expected)
if (e.which == 27) $('.cancel').click(); // esc (does not work)
});
我有两个功能。当按下回车键时,功能正常运行,但是当按下退出键时,功能无法正常运行。退出键的正确数字是多少?
$(document).keypress(function(e) {
if (e.which == 13) $('.save').click(); // enter (works as expected)
if (e.which == 27) $('.cancel').click(); // esc (does not work)
});
要获取所有字符的十六进制代码:http : //asciitable.com/
我一直使用keyup和e。哪个可以捕获转义密钥。
解释没有其他答案的地方;问题是您使用keypress
。
也许事件只是被错误命名,但keypress
被定义为在时触发。即文字。
而您想要的是/ ,它会在任何时候(分别在之前或之后)触发。即键盘上的那些东西。when an actual
character
is being inserted
keydown
keyup
the user depresses a
key
之所以出现差异,esc
是因为它是控制字符(字面上是“非打印字符”),因此不会写任何文本,因此甚至不会触发keypress
。
enter
很奇怪,因为即使您将其用作控制字符(即,用于控制UI),它仍在插入换行字符,这将触发keypress
。
资料来源:quirksmode
27
是转义键的代码。:)
要查找任何键的键码,请使用以下简单功能:
document.onkeydown = function(evt) {
console.log(evt.keyCode);
}
我知道这个问题是关于jquery的,但是对于那些使用jqueryui的人来说,许多键码都有常量:
http://api.jqueryui.com/jQuery.ui.keyCode/