iPhoneのEnterキーでformが送信されないようにする。

Railsのremote: trueでAjax化したformが多重送信し放題になっていて困りました。
iPhoneでinputにフォーカス当てた時に出てくるキーボード右下の「開く」キーはEnterキーで、押すとsubmitされるようです。

多重送信を防ぐ目的なら一度submitした時点でsubmitを潰せばいいと思ったのですが。

$("form").on("submit", function (e) {
  $(e.target).on("submit", false);
});

そもそもスマホのEnterで送信されてしまうのは多くの場合よろしくない気がするので、送信させずにキーボードを消すことにしました。

$('input').on('keypress',function (e) {
  if (e.which == 13) {  // Enterキーのキーコード
    e.preventDefault(); // 送信潰す
    e.target.blur();    // フォーカス外してキーボードを消す。
  }
});
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.