现在的位置: 首页 > 综合 > 正文

预防按钮的多次点击

2011年01月12日 ⁄ 综合 ⁄ 共 1112字 ⁄ 字号 评论关闭

今日在做一个新闻系统的评论时.

想到了预防"提交"按钮的多次点击的问提

(prevent multiple clicks of a submit button in ASP.NET).

以前碰到此类问提总是用重定位页面来解决.

这次我想找到一个一劳永逸的办法.

通过查讯Google,找到了一些代码,挑选一些较好的修改了一下。

public void page_load(Object obj,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);

}

private 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"/>

修改好的这个例子原理是提交后将按钮置于一定时间的无效状态.

仅能防止一些,因网速慢而心急的用户造成的误点击.

对于恶意的多次刷新而形成的多次提交还是没有办法解决.

(不过应该可通过页面的onbeforeunload事件解决)

抱歉!评论已关闭.