jQueryを使ってフォームの二重送信を防止する方法 複数ボタンの場合編
前回1つのフォームに1つのボタンがあった場合のフォーム2重送信防止方法を記しました。 今回は1つのフォームに複数ボタンが有る場合の2重送信を防止する方法を記します。
<form class="multiBtnForm"> <input class="disableMultiBtn" type="submit" name="post" value="post"> <input class="disableMultiBtn" type="submit" name="back" value="back"> </form> <script> $('.disableMultiBtn').on('click', function(){ $('<input />').attr('type', 'hidden') .attr('name', $(this).attr('name')) .attr('value', $(this).val()) .appendTo('.multiBtnForm'); $(this).text('please wait...'); $(this).attr('disabled', true); $(this).closest('form').submit(); }); </script>
フォームを送信する前にsubmitボタンにある要素を使って、hiddenタグを作成。 その後ボタンをdisabledにして、送信しています。
ボタンタグにある情報を付加するとフォームが送信できなくなります。 その注意点はこちら。