下面的代码适用于Chrome,Firefox,iPhone,甚至是Android上的第三方浏览器。但是,在本机浏览器键盘事件中运行特殊字符(如瑞典键盘上的Å,Ä和Ö)时,不会触发。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也不起作用。我错过了什么,或者这是一个错误?在PhoneGap中开发瑞典语应用程序时非常烦人!
谢谢!
编辑: 作为庄园在他回答说,可以使用input
事件。以下是演示keypress
,input
和change
事件之间差异的小提琴:http://jsfiddle.net/Qxd76/(使用http://jsfiddle.net/Qxd76/show查看智能手机上的结果)。
林遇到了同样的事情,这可能是android系统中的错误吗? – rapadura 2012-07-03 14:47:58
我很确定这是一个android原生浏览器中的错误,这是webviews正在使用的。我还没有确认,但我怀疑它应该在版本4之后解决,因为他们之后将浏览器更改为Chrome浏览器? – Zut 2012-07-19 18:08:04
@rapadura @Zut''input''事件不会返回''keyCode''或''which''或''charCode'' .. – Kosmetika 2014-07-14 14:06:23