出处:http://blog.csdn.net/Teng_s2000/archive/2005/10/17/505928.aspx 此处提供的代码用来实现当asp.net页面中的某个Button被点击后disable掉该页面中所有的Button,从而防止提交延时导致的多次提交。基于之前的onceclickbutton脚本.
< script language = " javascript " > <!-- function disableOtherSubmit() { var obj = event.srcElement; var objs = document.getElementsByTagName('INPUT'); for ( var i = 0 ; i < objs.length; i ++ ) { if (objs[i].type.toLowerCase() == 'submit') { objs[i].disabled = true ; } } } // --> </ script >
public class PreventMultiClick : System.Web.UI.Page { protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.Button Button2; protected System.Web.UI.WebControls.LinkButton LinkButton1; protected System.Web.UI.WebControls.Button Button3; private void Page_Load( object sender, System.EventArgs e) { this .GetPostBackEventReference( this .Button3); // 保证 __doPostBack(eventTarget, eventArgument) 正确注册 if ( ! IsPostBack) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append( " if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }} " ); // 保证验证函数的执行 sb.Append( " if(window.confirm('are you sure?')==false) return false; " ); // 自定义客户端脚本 sb.Append( " disableOtherSubmit(); " ); // disable所有submit按钮 sb.Append( this .GetPostBackEventReference( this .Button3)); // 用__doPostBack来提交,保证按钮的服务器端click事件执行 sb.Append( " ; " ); Button3.Attributes.Add( " onclick " ,sb.ToString()); } } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base .OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this .Button3.Click += new System.EventHandler( this .Button3_Click); this .Load += new System.EventHandler( this .Page_Load); } #endregion private void Button3_Click( object sender, System.EventArgs e) { System.Threading.Thread.Sleep( 3000 ); Response.Write( " Hello world! " ); } }
此处只是disable掉所有的submit button, 我觉得其它的可提交控件也是可以通过类似的方法来disable的.