微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Android浏览器中的某些键没有按键事件

以下代码在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 举报,一经查实,本站将立刻删除。

相关推荐