我有两个函数。当按下回车键时,函数正常运行,但当按下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/
其他回答
我一直用keyup和e.来捕捉escape键。
27是escape键的代码。:)
与其硬编码函数中的keycode值,不如考虑使用命名常量来更好地传达你的意思:
var KEYCODE_ENTER = 13;
var KEYCODE_ESC = 27;
$(document).keyup(function(e) {
if (e.keyCode == KEYCODE_ENTER) $('.save').click();
if (e.keyCode == KEYCODE_ESC) $('.cancel').click();
});
一些浏览器(如FireFox,不确定其他浏览器)定义了一个全局KeyEvent对象,为您公开这些类型的常量。这个SO问题也展示了在其他浏览器中定义该对象的好方法。
我知道这个问题是在问jquery,但是对于那些使用jqueryui的人来说,许多键码都有常量:
$.ui.keyCode.ESCAPE
http://api.jqueryui.com/jQuery.ui.keyCode/
试试jEscape插件(从谷歌驱动器下载)
$(document).escape(function() {
alert('ESC button pressed');
});
或获得跨浏览器的键码
var code = (e.keyCode ? e.keyCode : e.which);
if (code === 27) alert('ESC');
if (code === 13) alert('ENTER');
也许你可以用开关
var code = (e.keyCode ? e.keyCode : e.which);
switch (code) {
case 27:
alert('ESC');
break;
case 13:
alert('ENTER');
break;
}