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

上一篇: Which keycode for escape key with jQuery

下一篇: methods of objects be called without bind?