Asp.net
當我禁用送出按鈕以防止點兩下時,為什麼我的表單沒有發布?
像地球上的其他 Web 開發人員一樣,我遇到了使用者點兩下表單上的送出按鈕的問題。我的理解是,處理此問題的正常方法是在第一次點擊後立即禁用按鈕,但是當我這樣做時,它不會發布.
我確實對此進行了一些研究,上帝知道有足夠的資訊,但是其他問題,例如Disable button on form submission,禁用按鈕似乎有效。送出後禁用按鈕的原始海報似乎和我有同樣的問題,但沒有提到他如何/如果他解決了這個問題。
這是一些關於如何重複它的程式碼(在 IE8 Beta2 中測試,但在 IE7 中有同樣的問題)
我的aspx程式碼
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <script language="javascript" type="text/javascript"> function btn_onClick() { var chk = document.getElementById("chk"); if(chk.checked) { var btn = document.getElementById("btn"); btn.disabled = true; } } </script> <body> <form id="form1" runat="server"> <asp:Literal ID="lit" Text="--:--:--" runat="server" /> <br /> <asp:Button ID="btn" Text="Submit" runat="server" /> <br /> <input type="checkbox" id="chk" />Disable button on first click </form> </body> </html>我的cs程式碼
using System; public partial class _Default : System.Web.UI.Page { protected override void OnInit(EventArgs e) { base.OnInit(e); btn.Click += new EventHandler(btn_Click); btn.OnClientClick = "btn_onClick();"; } void btn_Click(object sender, EventArgs e) { lit.Text = DateTime.Now.ToString("HH:mm:ss"); } }請注意,當您點擊按鈕時,會發生回發,並且時間會更新。但是當您選中該複選框時,下次點擊該按鈕時,該按鈕被禁用(如預期的那樣),但永遠不會回發。
我到底在想什麼???
提前致謝。
我認為您只是缺少此標籤:
UseSubmitBehavior="false"試試這樣:
<asp:Button ID="btnUpdate" runat="server" UseSubmitBehavior="false" OnClientClick="if(Page_ClientValidate()) { this.disabled = true; } else {return false;}" Text = "Update" CssClass="button" OnClick="btnUpdate_Click" ValidationGroup="vgNew"/>
fall888 是對的,您的方法不適用於跨瀏覽器。我使用這個小片段來防止點兩下。