jQuery使用哪个键码进行换码
我有两个功能。 当按下Enter键时,功能运行正常,但按下转义键时不会。 退出键的正确数字是什么?
$(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).keyup(function(e) {
if (e.keyCode === 13) $('.save').click(); // enter
if (e.keyCode === 27) $('.cancel').click(); // esc
});
您可以考虑使用命名常量来更好地表达您的意思,而不是硬编码函数中的键代码值:
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问题显示了在其他浏览器中定义该对象的好方法。
(解答摘自我以前的评论)
你需要使用keyup
而不是keypress
。 例如:
$(document).keyup(function(e) {
if (e.which == 13) $('.save').click(); // enter
if (e.which == 27) $('.cancel').click(); // esc
});
keypress
似乎没有在浏览器之间一致地处理(尝试在IE浏览器和Chrome浏览器中的http://api.jquery.com/keypress进行演示,有时keypress
不会注册,并且'which'和'keyCode'不同),而keyup
是一致的。
由于当时的一些讨论e.which
VS e.keyCode
:注意e.which
是jQuery的标准化值,是一个推荐使用:
event.which属性将event.keyCode和event.charCode标准化。 建议观看event.which用于键盘按键输入。
(来自http://api.jquery.com/event.which/)
链接地址: http://www.djcxy.com/p/94923.html