我有两个函数。当按下回车键时,函数正常运行,但当按下escape键时,它就不正常了。退出键的正确数字是多少?
$(document).keypress(function(e) {
if (e.which == 13) $('.save').click(); // enter (works as expected)
if (e.which == 27) $('.cancel').click(); // esc (does not work)
});
我有两个函数。当按下回车键时,函数正常运行,但当按下escape键时,它就不正常了。退出键的正确数字是多少?
$(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/
其他回答
要获得所有字符的十六进制代码:http://asciitable.com/
我知道这个问题是在问jquery,但是对于那些使用jqueryui的人来说,许多键码都有常量:
$.ui.keyCode.ESCAPE
http://api.jqueryui.com/jQuery.ui.keyCode/
尝试使用keyup事件:
$(document).on('keyup', function(e) {
if (e.key == "Enter") $('.save').click();
if (e.key == "Escape") $('.cancel').click();
});
解释其他答案没有解释的地方;问题是你用的按键。
也许事件只是命名错误,但按键被定义为当插入一个实际字符时触发。即文本。 而你想要的是keydown/keyup,它在用户按下keyey之前或之后触发。也就是键盘上的那些东西。
区别出现在这里,因为esc是一个控制字符(字面上是“非打印字符”),因此不写入任何文本,因此甚至不触发按键。 enter是奇怪的,因为即使你使用它作为一个控制字符(即控制UI),它仍然插入一个换行字符,这将触发按键。
来源:quirksmode
我一直用keyup和e.来捕捉escape键。