まだ 変換中なのに 発火する Enterキー
日本語の
検索ボックスにきょうときょうで、
英語しか
確定のEnterと、待ち受けているEnterは同じ
IMEはkeydownの
ただ、keydownはisComposing === trueをkeyCode === 229を
直し方はガード一行
変換が
input.addEventListener("keydown", (e) => {
if (e.isComposing || e.keyCode === 229) return; // まだ変換中
if (e.key === "Enter") submit();
});isComposingがkeyCode === 229は
Reactはこのフラグを一段下に隠す
ReactはisComposingが
- onKeyDown={(e) => { if (e.key === "Enter") search(); }}
+ onKeyDown={(e) => {
+ if (e.nativeEvent.isComposing) return;
+ if (e.key === "Enter") search();
+ }}同じnativeEvent越しにe.isComposingをundefinedを
変換状態を自分で持つ
他のcompositionstartとcompositionend。
let composing = false;
el.addEventListener("compositionstart", () => (composing = true));
el.addEventListener("compositionend", () => (composing = false));
el.addEventListener("keydown", (e) => {
if (composing) return;
if (e.key === "Enter") submit();
}); どこで止まるか
フラグ方compositionendがkeydownよりcomposingフラグはfalseにisComposing / keyCode 229チェックを
そして