Javascript で Enter キーの入力を感知する
jQuery + Javascript を使って Enter キーを感知しようという場合には,以下のコードを考えがちである.
$(...).keyup(function(ev){if(ev.which==13) alert('Enter pressed');});
しかし,この方法は日本語入力を絡めたときに問題が発生する.漢字変換を使っていて Enter を入力したときにも感知してしまうのだ.これは,テキストボックスでエンターが押されたときに確定をするような処理をしたい場合に,少々問題になる.
どうにか出来ない物かと考えていたら,やはり先人がいたようである.
http://hondou.homedns.org/pukiwiki/pukiwiki.php?Javascript%20IME%C6%FE%CE%CF%C3%E6%A4%CE%C8%BD%C4%EA
上によれば,keypress が呼ばれずに keyup が呼ばれた場合,IME で変換中であると判定できるとのこと.実際に試したら上手く言った.
そして上手くいったついでに jQuery のプラグインにしてみた.
https://github.com/yuichi1004/jquery.smartenter
ご自由にどうぞ.