LoginSignup
9
9

More than 5 years have passed since last update.

かな入力モードで入力できない文字をJavaScriptでなんとかする方法

Posted at

経緯

かな入力中によく使う記号入力させてくれ的な謎の要望が来て対応したときのメモ。
環境はInternetExplorerで、かつMS-IME使っている場合限定。GoogleIMEとか使ってると動かない。

コード

var charTable = {
    '' : '@',
    '' : '=',
    '' : '*'
};
$("input[type=text],textarea").on("keydown", function(e){
    var converted = charTable[e.char];
    if (e.keyCode === 229 && e.shiftKey && converted) {
        e.key = e.char = converted;
        this.value += converted;
        e.preventDefault();
    }
});

日本語入力中のキーイベント

keydownとkeyupが発生する。keypressは発生しない。

event.keyCodeは入力キーの場合、常に229。

ローマ字入力、かな入力の判定は、event.char または event.keyで行う(どっちも同じのが入ってるっぽい)。
MS-IMEを使っていると、event.charにローマ字入力の場合は半角英数字、かな入力の場合は半角カナが入っていて、それで判定してる。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9