Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。
送信ボタンの連打防止スクリプト。1フォーム複数ボタンに対応。
- ボタンクリック
- submitとimageとresetを無効にする(複数可)
- フォーム送信
...みたいな流れ。用途としては、主に処理待ち中に送信ボタンを連打することによって起こる、複数投稿を回避する目的で使う。
HTML
<form action="" method="get" onsubmit="return onceOnly(this);">
<fieldset>
<legend>テストフォーム</legend>
<p>
<input type="text" name="test" value="" />
<input type="submit" value="送信" />
<input type="reset" value="取消" />
<input type="image" src="" alt="画像" />
</p>
</fieldset>
</form>
Script
var exec = false;
function onceOnly(thform) {
if(exec == true){ return false; };
exec = true;
obj = thform.getElementsByTagName('input');
for (i=0; i < obj.length; i++) {
if((obj[i].type) == 'submit' ||
(obj[i].type) == 'image' ||
(obj[i].type) == 'reset') {
obj[i].disabled = true;
};
};
alert('ボタン、無効になってるでしょ?');
return true;
};
memo: alertはチェック用なので、実用の際は外したほうが良いでしょう。
postscript: 改訂版をアップしました。
Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。