如何防止在服务器处理完成之前用户多次点击提交按钮(转)

方法一:
代码
        protected void Page_Load(object sender, EventArgs e)
        {
            btn.Attributes.Add(
"onclick""state=true;");
            StringBuilder sb 
= new StringBuilder();
            sb.Append(
"if (!state) return;");
            sb.Append(
"var button=document.getElementById('btn');");
            sb.Append(
"button.value='Please Wait...';");
            sb.Append(
"document.body.style.cursor='wait';");
            sb.Append(
"button.disabled=true;");

            
string strScript = "<script>";
            strScript 
= strScript + "var state=false;";

            
//将函数绑定到页面的onbeforeunload事件: 
            strScript = strScript + "window.attachEvent('onbeforeunload',function(){" + sb.ToString() + "});";
            strScript 
= strScript + "</" + "script>";
            Page.RegisterStartupScript(
"onbeforeunload", strScript);



        }

        
protected void Submit_Click(object sender, EventArgs e)
        {
            
//模拟长时间的按钮处理 
            System.Threading.Thread.Sleep(2000);
            Response.Write(
"<script>alert('bbbbbb!!');" + "</" + "script>");
        }

        
<asp:Button ID="btn" Text="Submit" OnClick="Submit_Click" 
            runat
="server"/>
方法2:
<asp:button id="btnSubmit" OnClick="Submit_Click" runat="server"  OnClientClick="this.disabled=true;this.form.submit();" UseSubmitBehavior="False"/>

 

方法3:
this.btnSubmit.Attributes["onclick"]=this.GetPostBackEventReference(this.btnSubmit)+";this.disabled=true;";//防止重复提交 

 

 

posted @ 2010-02-04 11:06  枫之传说  阅读(303)  评论(0编辑  收藏  举报