javascript - keypress 和 keydown 通过 event.which 提供不同的代码

标签 javascript jquery events

我使用的是 Firefox,当我使用 event.which 来确定哪个键导致事件触发时,在检查 keypress 事件与 keydown 事件的 event.which 时,我会得到不同的代码。

使用“-”键(连字符/减号)时。当基于按键事件报告时,我得到的 event.which 值为 45,但当基于按键事件报告时,我得到的值为 173。

对于按键,如果预期代码的值大于 128,我会得到错误的代码(我得到预期代码和 0x7f)。但是,如果我使用 keydown 执行相同的操作,我会得到预期的代码。

JSFiddle: http://jsfiddle.net/fzd3fjqm/1/

html:

<input id="whichkey" value="type something">
<div id="log"></div>
<div id="log2"></div>

javascript:

$( "#whichkey" ).on( "keypress", function( event ) {
$( "#log" ).html( event.type + ": " + event.which );
});
$( "#whichkey" ).on( "keydown", function( event ) {
$( "#log2" ).html( event.type + ": " + event.which )
});

这是预期的吗?

我正在编写一个由按键触发的函数,并根据事件过滤按键,但它不能很好地适应所描述的行为。

如果这是预期的,那么在按键触发的函数中确定按下哪个键的正确方法是什么?

最佳答案

是的,每个事件的 keyCode 都不同(并且因浏览器而异):http://www.quirksmode.org/js/keys.html

关于javascript - keypress 和 keydown 通过 event.which 提供不同的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28035681/

相关文章:

Javascript函数增加/减少cellValue

javascript - 如何将状态对象/数据传递给(异步)ajax 回调?

javascript - 由于搜索操作而改变表格文本的颜色

javascript - 获取文本区域中的插入符号 XY 坐标

javascript - 何时使用一次性事件监听器以及为什么?

javascript - TypeScript 中未定义的属性

javascript - IE和其他浏览器的图像质量差异

javascript - 从 Iframe 调用父窗口方法(不同)

java - 通过ajax获取controller中的html对象

javascript - Node.js:如何从事件监听器返回值?