Javascript event.charCode始终返回0

Javascript event.charCode始终返回0,javascript,html,Javascript,Html,我有一个页面,在用户单击页面的一部分(div)后,我需要从中捕获输入。这是我的密码: <html> <body> <div style="background-color: lightpink" onkeydown="onkeydown1(event)" tabindex="-1"> click me, then press a key </div> <script type="text/javascript"> function o

我有一个页面,在用户单击页面的一部分(div)后,我需要从中捕获输入。这是我的密码:

<html>
<body>
<div style="background-color: lightpink" onkeydown="onkeydown1(event)" tabindex="-1">
click me, then press a key
</div>

<script type="text/javascript">
function onkeydown1(event)
{
    alert(event.charCode);
}
</script>
</body>
</html>

单击我,然后按键
函数onkeydown1(事件)
{
警报(event.charCode);
}
在行动中看到它:

我花了最长的时间才做到这一点,因为FireFox默认情况下不允许div“聚焦”。最终我发现为div设置tabindex可以让它聚焦,onkeydown事件也可以工作

我现在的问题是,当我点击div并按下一个键时,无论按下哪个键,都会返回值“0”。为什么会发生这种情况,我如何修复它


我将非常感谢您能给予的任何指导

使用
event.keyCode
event.which
(取决于浏览器)代替读取

小结:使用
按键
事件是获取有关键入字符的可靠信息的唯一方法。以下内容足以让您在大多数情况下输入字符:

var charCode = (typeof event.which == "undefined") ? event.keyCode : event.which;
alert("Character typed: " + String.fromCharCode(charCode));

您可以通过tabindex属性获得焦点,并且可以对其进行制表,但是没有用于div接收键事件的接口


您可以从文本输入和窗口本身获取这些信息。

短版本为:。那篇怪诞的文章应该解释一切。基本上,为了便于携带
charCode
,您需要检测
keyPress
事件,然后尝试
evt.charCode | | evt.keyCode
事件。如果您想区分小写字母和大写字母,keyCode
可能无法实现您想要的功能。(或者想忽略修改键。)否。一旦元素可以接收焦点,它就可以触发键事件。