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

2006/10/26/Thu.送信ボタンを 1回しか押せないようにする JavaScript

惰眠を堪能した T です。こんばんは。

Web 日記

Google のマネをして、

« S h u u u u u u u r a b a »

というページ・ナビゲーションを作ってみたのだが、あまりにバカバカしいのでやめた。「Yahooooooo!」とかやらないかな。Google から怒られそうだが。表現の特許とか取ってそうだな。

ところで、通信が遅いときにイラついて「送信」ボタンを連打しない、というのは常識であるが、最初から送信ボタンを 1回しかクリックできないようにしておけば、そもそも問題は起こらない。アップローダを作るついでに、送信ボタンを 1回しか押せないようにする 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 ボタンが使えなくなる。BBS などで空クリックすれば、具体的な動作がわかると思う。

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