以下代码在Chrome、Firefox、iPhone上甚至在Android的第三方浏览器中都能正常工作。但是,在我的瑞典键盘的本地浏览器中运行时,像Å、Ä和Ö这样的特殊字符的关键事件根本不会被触发。
该示例只允许用户一次输入一个字符。除非我在Android上按下像Å、Ä或Ö这样的键,否则它就可以完美地工作,此时我可以输入任意数量的字符。
这里有一个jsFiddle供任何希望尝试的人使用:http://jsfiddle.net/x7H6f/。如果您的键盘上没有像我这样的瑞典特殊键,那么像é(按住E键)这样的字符应该可以“骗过去”。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Key Event test</title>
</head>
<body>
<input type="text" id="a" name="test" />
<script>
document.getElementById("a").onkeypress = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
this.value = String.fromCharCode(k);
return false;
}
</script>
</body>
</html>
不,keydown和keyup也不起作用。我有漏掉了什么吗,还是这是一个bug?在使用PhoneGap开发瑞典应用时非常恼人!
谢谢!
编辑:
如Manor在他的答案中所说,可以使用事件。这里有一个演示keypress
,input
和change
事件之间差异的fiddle:http://jsfiddle.net/Qxd76/(使用http://jsfiddle.net/Qxd76/show在智能手机上查看结果)。