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

前端之家收集整理的这篇文章主要介绍了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);
}

猜你在找的JavaScript相关文章