【发布时间】:2015-08-24 22:43:27
【问题描述】:
我有一个带有文本区域的网页,我需要捕获用户键入的键(以便我可以用不同的 unicode 字符替换键入的键)。我目前的代码如下:
$("#myTextArea").bind('keypress', function(event) {
var keyInput = event.which;
// call other functions
});
以上代码适用于 PC 和 iPhone/Safari。但是,在 android(三星)平板电脑上使用 Chrome 时会失败。出于某种原因,当我在 android 虚拟(软)键盘上键入时,不会触发“keypress”事件。安卓版本是5.0.2。
如果我尝试使用 "keyUp" 或 "keyDown",它总是为所有字符返回 229(返回键、空格、退格等除外)。
即使 keyCode 始终为 229,文本区域仍会显示用户键入的正确字符。这意味着设备知道输入了哪个密钥,但不知何故我无法使用 javascript 处理此事件(和密钥代码)。
以下是我迄今为止尝试过的替代方案及其结果:
$("#mainTextArea").on("keydown keyup", function(event) {
// event.which and event.keyCode both return 229
$(document).on('keypress', function(event) {
// function is not triggered
$('#myTextArea').bind('input keypress', function(event) {
// comes inside function, but keyCode and which are undefined
感谢有关此问题的任何帮助..
【问题讨论】:
-
此处记录的 Android 错误:bugs.chromium.org/p/chromium/issues/detail?id=118639
标签: javascript android jquery samsung-mobile