预防按钮的多次点击
今日在做一个新闻系统的评论时.想到了预防"提交"按钮的多次点击的问提
(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事件解决)
--------------------编程问答-------------------- JF --------------------编程问答-------------------- JF
--------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 转抄的文章请注明出处 --------------------编程问答-------------------- 不错. --------------------编程问答-------------------- >>我的这个简单
//JS:
<script type="text/javascript">
var x = 0;
function xx()
{
x++;
if(x==1)
{
return true;
}
else
{
return false;
}
}
</script>
//CS:
protected void Page_Load(object sender, EventArgs e)
{
this.Button1.Attributes.Add("onclick", @"JavaScript:return xx();");
}
--------------------编程问答-------------------- up --------------------编程问答-------------------- 接分 --------------------编程问答-------------------- http://web1.zzhxph.cn/80051.html --------------------编程问答-------------------- jf --------------------编程问答-------------------- 用验证码不可以吗? --------------------编程问答-------------------- 浮出水面 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 我接手的网站也在想这个问题, --------------------编程问答-------------------- 加令牌啊。
补充:.NET技术 , ASP.NET