我有一个页面,我需要在用户点击页面的一部分(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”。为什么会发生这种情况,我该如何解决?
我非常感谢您提供的任何指导!
答案 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.keyCode
或event.which
(取决于浏览器)
答案 2 :(得分:0)
你专注于tabindex属性,你可以选择它,但没有接口让div接收一个关键事件。
您可以从文本输入和窗口本身获取它们。