我有拦截键盘事件(如 keydown)的代码。但是我无法在 Android 手机上使用它,因为 keydown 事件不适用于 Android Chrome 上的虚拟键盘。因此,我决定使用输入事件监听器。
这是我设置输入侦听器的方法:
const tuşaBasılıncaSuniKlavye = (hadise: Event) => {
const metinHadisesi = hadise as InputEvent;
let harf = "";
if (metinHadisesi.data !== null) {
harf = metinHadisesi.data;
}
console.log("Hadise> data: -" + harf + "- -" + harf.slice(-1) + "-");
console.log("Hadise> inputType: -" + metinHadisesi.inputType + "-");
};
metinSahası.addEventListener("input", tuşaBasılıncaSuniKlavye, false);
现在,如果我慢慢按下按键,一切都会正常。但是,如果我单击 1 或 2 个键,然后快速单击空格 2 次,侦听器会收到 deleteContentBackward inputType 并将输入字段内的文本打乱。
示例:
Hadise> data: -G- -G-
Hadise> inputType: -insertText-
Hadise> data: -h- -h-
Hadise> inputType: -insertText-
Hadise> data: -- --
Hadise> inputType: -deleteContentBackward-
Hadise> data: -Gj - - -
Hadise> inputType: -insertText-
您知道为什么会发生这种情况吗?谢谢。
我不知道为什么我的问题 ID 被否决,但这是我现在用来解决这个问题的方法:
以下是这里的答案: https://stackoverflow.com/a/14469824/3517339
我已将这些添加到我的输入字段中:
metinSahası.setAttribute("spellcheck", "false");
metinSahası.setAttribute("autocorrect", "off");
metinSahası.setAttribute("autocapitalize", "off");
对于像“.”这样奇怪的点和空格数据,我已将其替换为双空格。像这样:
harf.replace(". ", " ")
目前有效。