ラボ > Javascript関連:イベント関連
文字入力中にイベント処理が発生し、漢字変換ができない(compositionstart, compositionend)
スマホ、firefoxがinputイベント関連の問題で漢字変換ができない
作成日:2025-12-09, 更新日:2025-12-09
概要
IME(日本語入力)のイベントの対応が別途必要
Javascript
const elm = elm.querySelector('#selector');
elm._isComposing = false;
elm.addEventListener('compositionstart', ev => { // 日本語入力開始
ev.target._isComposing = true;
});
elm.addEventListener('compositionend', ev => { // 日本語入力確定
ev.target._isComposing = false;
});
elm.oninput = function(ev) {
if (ev.target._isComposing) {
return; // IME入力中
}
// 任意の処理
}
jquery
$('#selector')
.on('compositionstart', function() { // 日本語入力開始
isComposing = true;
})
.on('compositionend', function() { // 日本語入力確定
isComposing = false;
$(this).trigger('input');
})
.on('input', function () {
if (isComposing) return;
// 任意の処理
});