cypher256's blog

Pleiades とか作った

による二重送信防止

ボタン、リンクの二重送信防止に加え、画面上のすべてのボタンとリンクを無効化。

<html>
<script>
// すべてのボタンとリンクを無効にする
function disableAllButtons() {
 // すべてのボタンを無効にする
 for (var i = 0; i < document.forms.length; i++) {
   var form = document.forms[i];
   for (var j = 0; j < form.elements.length; j++) {
     var ele = form.elements[j];
     var type = ele.type;
     if (type == "button" || type == "submit") {
       ele.disabled = true;
     }
   }
 }
 // すべてのリンクを無効にする
 var aTags = document.getElementsByTagName('A');
 for (var i = 0; aTags.length > i; i++){
   aTags[i].removeAttribute('href');
 }
}
</script>
<body>
<form target="_new" onsubmit="disableAllButtons()">
<input type="text" name="xxx" value="text">
<input type="button" value="button">
<input type="submit" value="submit" name="submitName" onclick="xxx.value = 'login'">
<a href="" readonly="true">link</a>
<input type="checkbox">
<input type="radio">
<input type="button" value="button2">
</form>
</body>
</html>