避免重复提交

避免重复提交

在提交表单时,经常会碰到由于网络、数据等问题导致用户多次点击提交按钮,以致于数据重复提交。在找解决方案时一般会想到点击按钮后用JS设置按钮的disabled=true,可是这样做是不能执行服务器端代码的(点击后按钮变不可用状态),有2中解决方案:

1. 通过隐藏按钮再显示一个disabled的按钮,就是用个备用的按钮,执行客户端的时候,服务器端按钮隐藏,备用的不可用按钮显示

<html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div> <asp:Button ID="btnOk" runat="server" Text="submit" OnClientClick="this.style.display='none';btnOkHide.style.display='block';" OnClick="btnOk_Click"/> <input id="btnOkHide" type="button" value="Please waiting..." style="display:none;" disabled="disabled" /> </div> </form></body></html>

2. 通过设置一全局JS 变量,来判断是否重复提交

var clicked = false;//global variable,it uses to avoid double submit. function validateData() { if (clicked) return false;clicked = true; return true; } <asp:Button ID="btnOk" runat="server" Text="submit" OnClientClick="return validateData();" OnClick="btnOk_Click"/>

转自:http://blog.sina.com.cn/s/blog_4a1015810101c1ep.html