フォームの二重送信を防止するサンプルです。
ボタンを2回押したときに警告を表示するパターンと、 送信ボタンを使用不可にするパターンを紹介します。
二重送信を防止する(警告表示パターン)
例)送信ボタンを2回押したら、警告を表示する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>サンプル</title> <script> //判定用フラグ var isSubmit = false; function checkNijyuSubmit(){ if(isSubmit){ //フラグがtrueならアラートを表示してsubmitしない alert("処理中です。"); return false; }else{ //フラグがtrueでなければ、フラグをtrueにした上でsubmitする isSubmit = true; return true; } } </script> </head> <body> <form action="xxx" onsubmit="return checkNijyuSubmit();"> <input type="submit" value=" 送信 " /> </form> </body> </html> |
解説
- submitの直前に送信フラグをチェックして、フラグがtrueならばsubmitを中止し、falseならばフラグをtrueにした後にsubmitを実行します。
- submitの結果が返ってきて画面が再描画されたり、ページ遷移してきた場合にはフラグはリセットされるので、またsubmitできるようになります。
二重送信を防止する(ボタン使用不可パターン)
例)送信ボタンを2回押したら、送信ボタンをDisableにする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>サンプル</title> <script> function checkNijyuSubmit(){ var obj = document.getElementById("btnSubmit"); if(obj.disabled){ //ボタンがdisabledならsubmitしない return false; }else{ //ボタンがdisabledでなければ、ボタンをdisabledにした上でsubmitする obj.disabled = true; return true; } } </script> </head> <body> <form action="xxx" onsubmit="return checkNijyuSubmit();"> <input type="submit" id="btnSubmit" value=" 送信 " /> </form> </body> </html> |
解説
- submitの直前に送信ボタンの使用可否をチェックして、使用不可ならばsubmitを中止し、使用可ならばボタンを使用不可にした後にsubmitを実行します。
- submitの結果が返ってきて画面が再描画されたり、ページ遷移してきた場合にはボタンは使用可となるので、またsubmitできるようになります。