- JavaScript: 送信ボタンを一回しか押せないようにする

送信ボタンを一回しか押せないようにする

通信が遅いときにイラついても、「送信」ボタンを連打してはいけない……というのは常識だが、最初から送信ボタンを一回しかクリックできないようにしておけば、そもそも問題は起こらない。

onload = function () {
 if (document.all) {
  formList = document.all.tags("form");
 } else if (document.getElementsByTagName) {
  formList = document.getElementsByTagName("form");
 } else {
  return;
 }
 for (i = 0; i < formList.length; i++) {
  formList[i].onsubmit = disableSubmit;
 }
}

function disableSubmit () {
 var elements = this.elements;
 for (i = 0; i < elements.length; i++) {
  if (elements[i].type == "submit") {
   elements[i].disabled = true;
  }
 }
}

フォームが「送信」されたとき (onsubmit) に、disableSubmit が動くように onload で設定しておく。送信ボタンが押されると、そのフォーム内にある submit ボタンが使えなくなる。

一つのフォームに複数の submit ボタンがある場合、あるいは submit ボタンでデータのやり取りをしていない場合には対応していない。

関連