我正在尝试使用 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/