event.charCode始终返回0

时间:2012-06-23 23:36:07

标签: 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 onkeydown1(event)
{
    alert(event.charCode);
}
</script>
</body>
</html>

查看实际操作:http://jsfiddle.net/WRwBF/

我花了这么长时间才能做到这一点因为FireFox默认情况下不允许div“有焦点”。最后我发现为div设置tabindex可以使它成为焦点并且onkeydown事件可以正常工作。

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

我非常感谢您提供的任何指导!

3 个答案:

答案 0 :(得分:5)

阅读http://unixpapa.com/js/key.html

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

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

答案 1 :(得分:0)

使用event.keyCodeevent.which(取决于浏览器)

答案 2 :(得分:0)

你专注于tabindex属性,你可以选择它,但没有接口让div接收一个关键事件。

您可以从文本输入和窗口本身获取它们。