作成日:2019-07-26, 更新日:2022-06-13
基本
下記のようなコトをしたいが、「type="submit"」のときは面倒。
<button type="submit">送信</button> <script> $('button').on('click', function(e){ if ( 入力チェック等でエラー ) { return false; } $(this).parents('form').submit(); }); </script>
面倒なコト
「submit()」が実行されると「submit()」とは別にform送信が行われる(2回送信される)
回避策
「type="submit"」を「type="button"」にする
「type="button"」の問題
例えばログインフォーム
・「type="submit"」だとID入力→TAB→パスワード入力→Enterキー(送信ボタンが押下される)→Form送信
・「type="button"」だとID入力→TAB→パスワード入力→送信ボタンがフォーカスされるまでTAB→Enterキー→Form送信
→「送信ボタンがフォーカスされるまでTAB」をどうにかしたい。
イベントの伝播を止める
▼こんな感じ
<button type="submit">送信</button> <script> $('button').on('click', function(e){ e.preventDefault(); $(this).parents('form').submit(); }); </script>
めも
実際は、「type=button」にして・・・ID/パスワードが入力されたら「type=submit」に変更したほうが良いと思う。