javascript-当用户在Chrome上按下键盘时,如何检测“删除”和“.”?

当我按时.它会触发三个事件,分别为keydown,keypress和keyup.

keydown
  which: 190 == ¾
  keyCode: 190 == ¾

keypress
  which: 46 == .
  keyCode: 46 == .

keyup
  which: 190 == ¾
  keyCode: 190 == ¾

当我按Delete键时,它会触发两个事件,即keydown和keyup.

keydown
  which: 46 == .
  keyCode: 46 == .

keyup
  which: 46 == .
  keyCode: 46 == .

我想按.并可以获得相应的字符(46 ==.).但是在keydown和keyup上我得到190,即¾.在按键上我得到正确的值,但是当我按下Delete时不会触发此事件.

当我按Delete键时,我在按键按下和按键输入上得到了代码46.但是代码46是一个.而不是删除.

如果是,我该如何进行一次事件捕获两个键并告诉它们之间的区别.按下还是删除键?

要测试的页面:http://jsfiddle.net/Eg9F3/

解决方法:

我认为最好的解决方案是映射所需的键(demo),然后使用e.which交叉引用所按下的键.跨浏览器的keyCode值有good reference,在这种情况下可以使用,因为jQuery标准化了e.which值.

var keys = {
  46  : 'del',
  190 : '.'
};

$("textarea").bind('keyup', function(e){
  $('#r').append( 'keyup (' + e.which + '): ' + (keys[e.which] || String.fromCharCode(e.which)) );
});

这类似于jQuery UI使用的方法-看到文件顶部的键控代码交叉引用了吗?这也是我在keycaster插件中使用的方法.

上一篇:Python-Linux:如何检测USB键盘是否已插入和拔出


下一篇:Android键盘显示后jQuery移动页脚或视口大小错误