近日我也遇见当保存的数据量过大时,页面会卡住不动,客户不明情况连点按钮重复提交。网上搜索了一下也没有找到很好的解决方案。常规的设置Enabled属性在未拿到新页面前是无效的,而在客户端单击事件里填写disabled="true";时后台事件处理器代码将不再执行,弹出div遮挡什么的都不是最理想的状态。最理想的还是使按钮变灰,经过一天的琢磨,方法已经找到,如有不足,请大家指出 :
解决思路:使按钮变灰,阻止二次操作。直到页面回发。实现原理:用一个普通客户端脚本可控制的html按钮牵引要执行的button触发其事件解决步骤:1. 在页面上增加一个新的 html 标准button,注意是普通button,不是submit!并标记为runat=server 代码如下:
<input id="btnCli" type="button" runat="server" value="测试"/> 2. <head></head>标签中新增js代码,用于单击时使按钮变灰:
<script type="text/javascript">
function test(){
document.formControl.btnCli.disabled="true";
}
</script>3. 给刚添加的客户端button按钮增加两个事件:onclick="test();" onserverclick="btnCli_ServerClick"4. 切换到后台.vb 文件 增加 id为btnCli 的 button的点击事件的服务器端事件处理器,代码如下
Protected Sub btnCli_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs)
End Sub5. 假如说我们有一个 id为 btnSave的服务器端按钮为保存数据等重要操作,即防止客户多次点击的要保护按钮。btnSave的服务器端事件处理器已经写好。那么,在以上btnCli 的服务器端点击事件里填写的代码很简单:
Call btnSave_Click(Nothing, Nothing)6. 到这里,功能代码已经全部实现。剩下的就是给该标准的html按钮增加CSS样式表,使之与页面相协调
7. 最后一步,将id为 btnCli的button移动至要保护的btnSave位置处,btnSave移动到一边,并隐藏。
测试结果:
为了模拟真实情景,我们在btnSave的事件处理器中增加5秒的线程休眠,当点击btnCli时 客户端js优先执行。按钮马上变灰,后台代码跳转至btnSave点击事件的事件处理器 Thread.Sleep(5000)处开始等待,5秒结束后,页面回发,拿到新页面,btnCli按钮自动变亮。客户端与服务器端代码互不影响。
解决思路:使按钮变灰,阻止二次操作。直到页面回发。实现原理:用一个普通客户端脚本可控制的html按钮牵引要执行的button触发其事件解决步骤:1. 在页面上增加一个新的 html 标准button,注意是普通button,不是submit!并标记为runat=server 代码如下:
<input id="btnCli" type="button" runat="server" value="测试"/> 2. <head></head>标签中新增js代码,用于单击时使按钮变灰:
<script type="text/javascript">
function test(){
document.formControl.btnCli.disabled="true";
}
</script>3. 给刚添加的客户端button按钮增加两个事件:onclick="test();" onserverclick="btnCli_ServerClick"4. 切换到后台.vb 文件 增加 id为btnCli 的 button的点击事件的服务器端事件处理器,代码如下
Protected Sub btnCli_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs)
End Sub5. 假如说我们有一个 id为 btnSave的服务器端按钮为保存数据等重要操作,即防止客户多次点击的要保护按钮。btnSave的服务器端事件处理器已经写好。那么,在以上btnCli 的服务器端点击事件里填写的代码很简单:
Call btnSave_Click(Nothing, Nothing)6. 到这里,功能代码已经全部实现。剩下的就是给该标准的html按钮增加CSS样式表,使之与页面相协调
7. 最后一步,将id为 btnCli的button移动至要保护的btnSave位置处,btnSave移动到一边,并隐藏。
测试结果:
为了模拟真实情景,我们在btnSave的事件处理器中增加5秒的线程休眠,当点击btnCli时 客户端js优先执行。按钮马上变灰,后台代码跳转至btnSave点击事件的事件处理器 Thread.Sleep(5000)处开始等待,5秒结束后,页面回发,拿到新页面,btnCli按钮自动变亮。客户端与服务器端代码互不影响。
解决方案 »
- 火狐浏览器关闭问题,急~~~~~~~~~
- 追加一行
- 真是怪:为什么要用三个等号?看不明白用意啊。
- jQuery中在执行一函数后,怎样重新注册页面加载函数?
- 有关Jquery sortable,我想保存排序后的新顺序,写到后台,不知道要怎么做?
- 大家知道csdn哪里能找到以往论坛里面发过的帖子,我想收集起来自己再学习研究一下谢谢
- NODEJS用SOCKET发送JSON数据里面包含SOCKET对象报错
- Object对象存储数据和Array对象存储数据有什么区别
- 虽说javascript没有二维数组概念,但以下这个程序为什么会错误?
- [讨论]IE发现最新地址欺骗漏洞
- 让自己画的小人动起来
- document.execCommand(”saveAs”) ie另存为 保存对话框问题
然后js 方法里面将这个服务器控件的disable属性设置为false
同时在点击到后台Click里面,把按钮设置Enable属性设置为true
这样就可以在响应,后用户才可以点击