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

标签 javascript jquery android cordova

以下代码在 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 也不起作用。我错过了什么,或者这是一个错误?在 PhoneGap 中开发瑞典应用程序时非常烦人!

谢谢!


编辑: 正如 Manor 在他的回答中所说,可以使用 input 事件。这是一个演示 keypressinputchange 事件之间差异的 fiddle :http://jsfiddle.net/Qxd76/ (使用 http://jsfiddle.net/Qxd76/show 在智能手机上查看结果)。

最佳答案

我刚刚花了很多时间来解决这个问题。我正在学习希伯来语,所有希伯来语宪章都不适合我。

我找到了解决方案,我会在之前给出简短的解释

当使用所有键事件时,浏览器会搜索您按下的键。由于某种原因,Android native 浏览器中所有其他语言的英文章程都是未知的,这就是为什么在您填写输入章程时不会触发任何事件的原因。

解决方案是在输入中而不是键上搜索事件。例如,如果我们在文本输入中有 .change() 方法对我们来说会很棒。

我在 addEventListener() 方法中使用并且非常有效。

这是代码

var exmpleInput = document.getElementById('input-id');
if(exmpleInput) {
    exmpleInput.addEventListener("input", function() {
        exampleFunction(this)
    }, false);
}

关于javascript - Android 浏览器中某些键没有按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9302986/

相关文章:

android - 文本按比例放大以适合 TextView 和 EditText

java - Android Studio Java 字符串比较

android - Facebook 上的哈希关键问题

javascript - 如何使用 javascript/typescript 从字符串中删除第一次出现 "_"之前的文本?

jquery - 使 div 平滑变大并查看其他内容,切换

javascript - 将对 $.fadeIn() 的调用重定向到 $.show()

javascript - 更改每个 H4 标签后第一个 p 标签的 CSS

javascript - Angular 2 生命周期钩子(Hook)未调用(ES5 javascript)

Javascript 积分计算器无法正常工作(HTML 选择/选项 + Javascript)

javascript - 调整屏幕大小时使用 jquery-js 更改类名