Monday, October 10, 2005

防止页面被多次提交

<br /><script language="javascript"> <br /> <!-- <br /> <br /> function disableOtherSubmit() <br /> { var obj = event.srcElement; <br /> var objs = document.getElementsByTagName('INPUT'); <br /> for(var i=0; i<objs.length; i++) <br /> { <br /> if(objs[i].type.toLowerCase() == 'submit') <br /> { <br /> objs[i].disabled = true; <br /> } <br /> } } <br /> <br /> //--> <br /> </script>public class PreventMultiClick : System.Web.UI.Page <br /> { <br /> protected System.Web.UI.WebControls.Button Button1; <br /> protected System.Web.UI.WebControls.Button Button2; <br /> protected System.Web.UI.WebControls.LinkButton LinkButton1; <br /> protected System.Web.UI.WebControls.Button Button3; <br /> <br /> private void Page_Load(object sender, System.EventArgs e) <br /> { <br /> this.GetPostBackEventReference(this.Button3); //保证 __doPostBack(eventTarget, eventArgument) 正确注册 <br /> if(!IsPostBack) <br /> { <br /> System.Text.StringBuilder sb = new System.Text.StringBuilder(); <br /> sb.Append("if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }}"); //保证验证函数的执行 <br /> sb.Append("if(window.confirm('are you sure?')==false) return false;"); //自定义客户端脚本 <br /> sb.Append("disableOtherSubmit();"); // disable所有submit按钮 <br /> sb.Append(this.GetPostBackEventReference(this.Button3)); //用__doPostBack来提交,保证按钮的服务器端click事件执行 <br /> sb.Append(";"); <br /> Button3.Attributes.Add("onclick",sb.ToString()); <br /> } <br /> } <br /> <br /> #region Web Form Designer generated code <br /> override protected void OnInit(EventArgs e) <br /> { <br /> // <br /> // CODEGEN: This call is required by the ASP.NET Web Form Designer. <br /> // <br /> InitializeComponent(); <br /> base.OnInit(e); <br /> } <br /> <br /> /// <summary> <br /> /// Required method for Designer support - do not modify <br /> /// the contents of this method with the code editor. <br /> /// </summary> <br /> private void InitializeComponent() <br /> { <br /> this.Button3.Click += new System.EventHandler(this.Button3_Click); <br /> this.Load += new System.EventHandler(this.Page_Load); <br /> <br /> } <br /> #endregion <br /> <br /> private void Button3_Click(object sender, System.EventArgs e) <br /> { <br /> System.Threading.Thread.Sleep(3000); <br /> Response.Write("Hello world!"); <br /> } <br /> } <br />

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home