我試圖禁用一個按鈕,當用戶提交付款表單和代碼張貼表單導致在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
這段代碼發佈兩次(並禁用提交按鈕並驗證輸入):
<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" />
此代碼的帖子兩次(但不會禁用提交按鈕):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="__doPostBack('ctl00$MainContent$cmdSubmit','');" id="ctl00_MainContent_cmdSubmit" />
此代碼的帖子一次(但不會驗證用戶輸入並不會禁用提交按鈕):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" id="ctl00_MainContent_cmdSubmit" />
此代碼的帖子一次(但不能禁用提交按鈕):
<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" />
顯然它的提交按鈕,冒充真實問題的禁用。你有什麼想法,我們如何禁用提交以避免多次點擊?
當我刪除該行實際上它並不提交。我有這個附加到按鈕,但它從來沒有調用該功能時,該行不在那裏: this.btnSubmit.Click + = new EventHandler(btnSumbit_Click); – 2008-11-13 03:34:49
嗯。你可以嘗試添加返回true;到你的JavaScript塊的末尾,看看會發生什麼? – 2008-11-13 04:07:45