提问人:Nate 提问时间:6/24/2012 更新时间:6/24/2012 访问量:8078
event.charCode 始终返回 0
event.charCode always returning 0
问:
我有一个页面,我需要在用户单击页面的一部分(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”。为什么会发生这种情况,我该如何解决?
我非常感谢您能提供的任何指导!
答:
1赞
Danilo Valente
6/24/2012
#1
改用 或(取决于浏览器)event.keyCode
event.which
评论
2赞
millimoose
6/24/2012
event.keyCode
如果您希望能够区分小写字母和大写字母,可能不会做您想要的。(或者想要忽略修饰键。
7赞
Tim Down
6/24/2012
#2
阅读 http://unixpapa.com/js/key.html。
摘要:使用该事件是获取有关所键入字符的可靠信息的唯一方法。在大多数情况下,以下内容足以让您键入字符:keypress
var charCode = (typeof event.which == "undefined") ? event.keyCode : event.which;
alert("Character typed: " + String.fromCharCode(charCode));
0赞
kennebec
6/24/2012
#3
您可以通过 tabindex 属性获得焦点,并且可以按 Tab 键切换到它,但是没有 div 的接口来接收键事件。
您可以从文本输入和窗口本身获取这些内容。
评论
0赞
Tim Down
6/24/2012
不。一旦元素可以获得焦点,它就可以触发关键事件。jsfiddle.net/timdown/rLfF5
下一个:PHP中变量的默认值?
评论
charCode
keyPress
evt.charCode || evt.keyCode