Help us understand the problem. What is going on with this article?

日本語確定時のenterキー入力を判別しつつ入力内容により処理する方法のメモ

More than 3 years have passed since last update.

jQueryでinputフィールドに入力されている内容を監視し、enterキーが押されたタイミングで処理を発火する
また、1文字単位で入力内容の変化を検知して処理を発火する

keypressを使用した場合、受け取ったイベントにキーコードが含まれるものの、
inputフィールドのval()で取得できる値は入力実行前の値となるためenterキーが押されたことは検知できるが、1文字単位での処理を行うのは(可能だろうけど)面倒かもしれない。
また、この場合、日本語変換中か否かの判定ができないような気がする。

上記踏まえ以下のようにしたところ意図通り動作した。
(日本語確定状態でEnterを押したときにfunc1、空欄になったときにfunc2、その他入力時func3)

  var keyDownCode = 0;
  $('#message').keydown(function(e) {
    keyDownCode = e.which;  // 押下されたキーのコードをとっておく(日本語変換確定の場合keyupと異なるコード)
  });
  $('#message').keyup(function(e) {
    if ( 13 == e.which && e.which == keyDownCode ) {
      // 日本語入力確定済みかつinputにフォーカスのある状態でエンターキー押下したときの処理
      func1();
      return false;
    }
    $('#message').change();  // 1文字ごとの変化を監視処理したい場合、changeイベントを発生させる
  });
  $('#message').change(function() {
    if('' === $(this).val() && currentId) {
      // inputテキストが空欄になった
      func2();
    } else if('' !== $(this).val()) {
      // inputテキストが空欄ではない(変換途上の文字列含む)
      func3();
    }
  });
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした