ユーザーが支払いフォームを送信したときにボタンを無効にしようとしていますが、フォームを投稿するコードが Firefox で二重投稿を引き起こしています。この問題は、コードを削除した場合には発生せず、Firefox 以外のブラウザでは発生しません。
ここで二重投稿を防ぐ方法はありますか?
System.Text.StringBuilder sb = new StringBuilder();
sb.Append("if (typeof(Page_ClientValidate) == 'function') { ");
sb.Append("if (Page_ClientValidate() == false) { return false; }} ");
sb.Append("this.value = 'Please wait...';");
sb.Append("this.disabled = true;");
sb.Append(Page.GetPostBackEventReference(btnSubmit ));
sb.Append(";");
btnSubmit.Attributes.Add("onclick", sb.ToString());
問題を引き起こしているのは sb.Append(Page.GetPostBackEventReference(btnSubmit )) 行です
ありがとう
編集: ボタンの c# は次のとおりです。
<asp:Button ID="cmdSubmit" runat="server" Text="Submit" />
これがhtml
です。このコードは2回投稿します(送信ボタンを無効にし、入力を検証します):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }} this.value = 'Please wait...';this.disabled = true;document.getElementById('ctl00_MainContent_cmdBack').disabled = true;__doPostBack('ctl00$MainContent$cmdSubmit','');" id="ctl00_MainContent_cmdSubmit" />
このコードは 2 回投稿します (ただし、送信ボタンは無効になりません)。
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="__doPostBack('ctl00$MainContent$cmdSubmit','');" id="ctl00_MainContent_cmdSubmit" />
このコードは 1 回投稿します (ただし、ユーザー入力を検証せず、送信ボタンを無効にしません)。
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" id="ctl00_MainContent_cmdSubmit" />
このコードは 1 回投稿します (ただし、送信ボタンは無効になりません)。
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$cmdSubmit", "", true, "", "", false, false))" id="ctl00_MainContent_cmdSubmit" />
このコードはまったく投稿しません:
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="this.disabled = true;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$cmdSubmit", "", true, "", "", false, false))" id="ctl00_MainContent_cmdSubmit" />
明らかに、問題を引き起こしているのは送信ボタンを無効にすることです。複数のクリックを避けるために送信を無効にする方法について何かアイデアはありますか?