$yuzu->log();

技術ネタなど。

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にして、送信しています。

ボタンタグにある情報を付加するとフォームが送信できなくなります。 その注意点はこちら