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

ご自由にどうぞ.