二重送信防止スクリプト
Submit 後に button コントロールと input コントロールと a コントロールを無効化するための、汎用的なスクリプト。
マスターページでインクルードしとくと楽。
イベントハンドラを直接設定しちゃってるので、複数のハンドラの存在を考慮する場合は要改造。
あと、サーバーサイドでもちゃんと対策しといた方がいいお。
今のトコ IE 6 と FireFox 3 のみ動作確認済み。
window.onload = function() { function protect() { function disable(controls) { for (var i = 0; i < controls.length; i++) { controls[i].disabled = true; } } function removeHref(controls) { for (var i = 0; i < controls.length; i++) { controls[i].removeAttribute("href"); } } disable(document.getElementsByTagName("button")); disable(document.getElementsByTagName("input")); removeHref(document.getElementsByTagName("a")); for (var i = 0; i < document.forms.length; i++) { document.forms[i].onsubmit = function() { return false; }; } } for (var i = 0; i < document.forms.length; i++) { document.forms[i].onsubmit = function() { setTimeout(protect, 0); }; } };