使用javascript捕获android虚拟键盘上键入的键

我有一个带有文本区域的网页,我需要捕获用户键入的键(这样我就可以用不同的unicode字符替换键入的键)。我目前的代码如下:

$(“#myTextArea”).bind('keypress',函数(事件){
var keyinport=event.which;
//调用其他函数
});

上述代码适用于PC和iPhone/Safari。然而,在android(三星)平板电脑上使用Chrome时,它会失败。由于某种原因,当我在安卓虚拟(软)键盘上键入时,不会触发“按键”事件。android版本是5.0.2

如果我尝试使用“keyUp”或“keyDown”,它总是为所有字符返回229(除了返回键、空格、退格等)

即使keyCode始终为229,textarea也会显示用户键入的正确字符。这意味着设备知道输入了哪个密钥,但不知何故,我无法使用javascript获得此事件(以及密钥代码)的句柄

以下是我迄今为止尝试过的备选方案及其结果:

$(“#mainTextArea”)。在(“按键向下键向上”,函数(事件){
//event.which和event.keyCode都返回229
$(文档).on('keypress',函数(事件){
//功能未被触发
$('#myTextArea').bind('input keypress',函数(事件){
//位于函数内部,但keyCode和未定义的

非常感谢您在这个问题上提供的任何帮助

不幸的是,你在这里似乎做不了什么。
Keypress事件已弃用,因此不会触发。
229 on keyup和keydown表示键盘缓冲区正忙。原因是,当您按下某个键时,由于自动建议和其他事件可能会立即发生并使事件无效,因此输入仍不能保证为用户按下的内容。
虽然在我看来,最好先发送密钥,然后触发另一个事件(可能是自动建议),这样您就可以单独执行了

目前我所知道的唯一一件事是连接到-keydown和keydup,在keydown上存储值,在keydown上获取值并找到delta,这是用户按下的。不幸的是,这对非输入控件(例如身体或类似的东西)不起作用。
也许不是你想听到的答案,但仍然是

发表评论