以下代码在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中开发瑞典应用程序时非常烦人!
谢谢!
编辑:
庄园在他的回答中说,可以使用输入事件.这是一个小提琴,演示了按键,输入和更改事件之间的区别:http://jsfiddle.net/Qxd76/(使用http://jsfiddle.net/Qxd76/show查看智能手机的结果).
解决方法
我只是花了大量的时间来解决这个问题.我发展到希伯来语,所有希伯来语宪章都不是为我发射的事件.
我找到解决方案,我会给它的简短解释
当使用所有关键事件时,浏览器搜索您要按的键.导致某些原因,在Android本机浏览器中,英文中的其他语言的所有章程都是未知的,这就是为什么在填写输入章程时不会发生任何事件.
解决方案是在输入中搜索事件,而不是在键上搜索事件.例如,如果我们在文本输入.change()方法将是伟大的我们.
我在addEventListener()方法中使用,并且像一个魅力一样工作.
这是代码
var exmpleInput = document.getElementById('input-id'); if(exmpleInput) { exmpleInput.addEventListener("input",function() { exampleFunction(this) },false); }
原文地址:https://www.jb51.cc/js/151812.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。