ラボ > 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;

	// 任意の処理
});