不应使用keydown事件的'charCode'属性。价值毫无意义

时间:2011-03-09 16:28:09

标签: javascript jquery javascript-events

用于替换jQuery的keydown事件的直接JavaScript语法是什么? Lint非常抱怨我很难阅读我的Firebug控制台。

由于我只是为我开发一个概念验证,我并不担心任何跨浏览器问题 - 它现在只能在Firefox中运行。

4 个答案:

答案 0 :(得分:2)

那是因为charCode在keydown事件中确实没有意义。如果您需要知道charCode,请将keydown事件更改为keypress事件。

答案 1 :(得分:2)

根据DOM level2 Events

  

DOM Level 2事件规范   不提供关键事件模块。   设计用于的事件模块   键盘输入设备将   包含在DOM的更高版本中   说明书

因此关键事件没有标准。目前所有浏览器都按照自己的意愿行事。如果您使用的是JS框架,它应该在所有浏览器中提供一致的值(毕竟这将成为框架的主要部分)。

答案 2 :(得分:2)

首先,其他人很好地解释了你问题的根源。

但是为了记录,回答你原来的问题,你需要的是addEventListener。这是在Javascript中附加事件的非突兀,漂亮和现代的方式。适用于所有现代浏览器(因此不适用于IE9,适用于您需要的IE attachEvent)。

例如,使用addEventListener,您可以分配以下事件:

var elem = document.getElementById("fos");
elem.addEventListener("keydown", whateverFunction, false);

您也可以使用简单的方式(elem.onkeydown=whateverFunction;),但我不鼓励您这样做。使用addEventListener,您可以为同一事件分配多个处理程序,并且您不会意外地覆盖您或库/第三方脚本分配的其他事件。

答案 3 :(得分:0)

更改

$(document).keydown(function(myEvent) {

document.onkeydown=function(myEvent){