8

我有一个页面,我需要在用户单击页面的一部分(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”。为什么会发生这种情况,我该如何解决?

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

4

3 回答 3

7

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

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

var charCode = (typeof event.which == "undefined") ? event.keyCode : event.which;
alert("Character typed: " + String.fromCharCode(charCode));
于 2012-06-24T00:11:10.237 回答
1

改用event.keyCodeor event.which(取决于浏览器)

于 2012-06-23T23:41:16.400 回答
0

您获得了 tabindex 属性的焦点,并且您可以使用 tab 键访问它,但是 div 没有接口来接收关键事件。

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

于 2012-06-24T00:14:36.463 回答