JavaScript:在 Android 上阻止文本输入时的退格键

标签 javascript

我正在尝试使用 jQuery 阻止 html 文本字段上的所有输入。以下解决方案适用于桌面浏览器:

that.input.keydown(function (e) {
    e.preventDefault();
    e.stopPropagation();
    e.stopImmediatePropagation();
    return false;
});

但是,虽然它会阻止常规输入,但它无法阻止 Android (Chrome) 上的退格键。我也尝试过阻止 keyup 和 keypress 事件,但这没有帮助。我不想设置只读属性,因为我打算在某些情况下允许输入。

有什么干净的解决方案吗?提前致谢!

最佳答案

现实是 Android 键盘不是键盘。当在 android 中打开文本字段时,文本字段所有者应用程序和键盘应用程序,简单地说,共享一个资源,即文本字段内容。键盘应用程序接收文本字段的全部内容,然后在本地进行编辑(包括删除),并通过诸如DeleteSurroundingText(用于简单删除非文本内容,即空格)或 setCompositionRegion/setCompositionText 等调用推送到应用程序(用于更改单词) 。这意味着自动更正可以对已经存在的单词起作用。

有些 Android 键盘会生成到达 Chrome 的按键事件,有些则不会。有时生成按键事件是没有意义的 - 如果自动更正单词,应该发送哪些按键?

当您正在寻找要显示的键盘和光标,但该字段在稍后之前保持不可编辑时,我建议您实现某种 onChange/Revert 循环。

Detect all changes to a <input type="text"> (immediately) using JQuery

关于JavaScript:在 Android 上阻止文本输入时的退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50215712/

相关文章:

javascript - 如何为动态添加的图像绑定(bind)图像加载回调?

javascript - 捕获视频并将其存储在服务器上?

C# OnCommand 调用警告框

javascript - 将项目推送到数组似乎对旧对象有反应

javascript - 谷歌地图,如何捕获POI上的右键单击事件

javascript - 我如何从该脚本中获取脚本文件名?

javascript - Vue 组件渲染期间多次调用的函数

javascript - node.js + coffeescript + jasmine 的好 IDE

javascript - 如何将onload添加到span

javascript - 优化 React 代码