Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
尚未分类 LINQ教程 Enterprise技术 性能优化/调试 水晶报表与打印 安全与加密 图形图像 文件处理 基础教程 Web Services 内置对象 控件示例 正则表达式\采集 ADO.NET 缓存\泛型\线程 XML技术 Url重写\静态页 vs2008综合教程
当前位置: 主页 > ASP.NET教程 > 尚未分类 >

禁止一个按钮在服务器事件处理完成前连续点击按钮

时间:2010-08-29 09:13来源:未知 作者:admin 点击:

改变文件上传控件的默认风格本来那控件是实现了业务的要求,不过测试人员对于这个控件发现了一个严重度比较高的bug:当用户连续点击按钮后(还未等服务器执行事件完毕)就会出现上传多个文件的问题。

通过思考抽取该bug的实质,得出的问题是:如何在一个按钮在服务器端执行完成之前禁止按钮。这样的话就防止在发送到服务器执行过程中禁止继续点击。

这当然是用脚本来实现了。因为脚本是客户端执行,是在发送到服务器端的任何事件之前,也是最快的。只要点击按钮后设置那按钮的disabled就行了。不过这需要一些技巧:

下面是一个错误解决方案:

  <asp:Button ID="Button4" runat="server" OnClick="Button4_Click" Text="Button"  OnClientClick="EnableControl(this)"/></form>
<script>
     function EnableControl(obj)
     {
        obj.disabled=true;
        return true;
     }
</script>
向上面这样设置当用户点击按钮后是不会发送到服务器端的。因为在客户端已经通过javascript把按钮禁用了。可见上面的方法不可行。

正确的解决方案:

在页面上放置一个Hidden Button,通过上面那按钮来触发这Hidden Button隐藏按钮的Click事件来执行服务器的事件。并且在点击该按钮后立即把当前点击的按钮disabled。这样就能解决了这个问题:下面是代码简单演示:

<asp:Button ID="Button4" runat="server"  Text="Button"  OnClientClick="EnableControl(this)"/>
<asp:Button ID="hiddenButton" runat="server" style="display:none;" OnClick="Button4_Click" />
<script>
     function EnableControl(obj)
     {
        obj.disabled=true;
        var hidden=document.getElementById("<%=hiddenButton.ClientID %>");
        hidden.click();
        return false;
     }
</script>
通过Button4点击后设置Button4禁用(避免用户连续点击),来触发HiddenButton的Click时间来触发服务器的事件。相当于点击Button4执行Button4 的服务器端事件。这样的话就解决了 禁止一个按钮在服务器事件处理完成前连续点击按钮(当用户点击按钮后立即被javaScript禁用,直到服务器端吧事件出来函数执行完毕后重新发送到客户端后就取消了禁用)这样就比较好的解决了这类问题。

(责任编辑:admin)
Tags:按钮
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价