サブミットボタンの二重押下を避ける策を教えて下さい。
私は単純にフラグで制御しています。
参考になれば幸いです。
<FORM action="<%= Request.ServerVariables("SCRIPT_NAME") %>" id=FORM1 method=post name=FORM1 onsubmit="return InputChk();">
<INPUT type="text" name="user" >
・・・
</FORM>
<SCRIPT LANGUAGE="JavaScript">
<!--
var flgDup = false; // 二重送信防止フラグ
function InputChk(){
if(flgDup==true){ // 二重送信防止チェック
return false; // サブミットされない
}
flgDup = true; // フラグをたてる
var obj = document.FORM1.user;
if(obj.value == ""){
alert("ユーザ名を入力してください。");
obj.focus();
obj.select();
flgDup = false; // フラグをもどす
return false; // サブミットされない
}
return true; // サブミットされる
}
//-->
</SCRIPT>
http://www.tohoho-web.com/js/form.htm
javascriptでクリック時にボタン無効にすれば良いのでは。
<body>
<form name="F" action="http://www.yahoo.co.jp">
<input name="S" type=submit value="submit"
onClick="document.F.S.disabled = true;
document.F.submit()"
/>
</form>
</body>
私もJavaScript(以下JSと略)案に賛成なのですが
JSはクライアント環境依存なので、サーバー側で処理したほうが間違いないと言えばそうかも知れませんね。
①受け渡しパラメータを使う
⇒リロードや再読み込みで2重登録が発生するので×
②セッションにフラグを持たす
Session("fummy_flg")
⇒頻繁な処理ではない、少人数向けサイトであれば現実的です。
③DBに主キーを持たす
重複判定処理をし、2回目は処理を迂回させる。
私のサイトはJS+③で制御をしています。
コメント(0件)