当我按时.它会触发三个事件,分别为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插件中使用的方法.