禁用(灰化) Button 后提交的问题
来源:互联网 发布:网络剪刀手 win7 64 编辑:程序博客网 时间:2024/05/16 15:08
某些处理响应时间较长,为了防止用户重复连续点击提交按钮,我们通常会在点击之后 disable 此按钮。
在 ASP.NET 2.0 中 asp:button 默认使用客户端浏览器的提交机制即呈现为 input type=submit,
如果直接设置 onclientclick="this.disabled=true" ,将无法执行提交。
解决方法:
只有设置 UseSubmitBehavior=false,按钮呈现为 input type=button,然后添加脚本
曾想当然的认为可以在 form 的 onsumit 中 disable input type=submit
注:ASP时代更常用此方案,可以同时对一个form具有多个提交按钮作出统一的“响应”
经测试,发现虽然可以回发页面,但是却无法触发服务器端的 Click 事件。
原来,当点击 input type=submit 按钮时,如果其 disabled=false(正常状态),那么浏览器会同时提交此按钮
(Request.Form 集合中可以查询到此按钮的value),而 disabled=true(禁用),浏览不会提交此按钮的value。
而 ASP.NET 内部则检索是否有Request.Form中有对应的name匹配当然页面WebControl.UnquieID 来确定谁提交了改页面,由此引发注册的服务器事件。
Updated 已经实现 2007年7月11日
让 ASP.NET 2.0 的 Sumbit Button 支持 禁用(灰化)提交
对于,input type=button ,浏览器永远都不提交此按钮给服务器,对于此类型提交,需要有一个隐藏域
input type=hidden name=__EVENTTARGET 来存储谁提交了此页面。
完整测试代码:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(1000 * 2);
}
protected void Page_Load(object sender, EventArgs e)
{
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
function chk(frm) {
frm.Button2.disabled =true;
frm.Button2.value='submitting';
}
</script>
</head>
<body>
<form id="form1" runat="server" onsubmit="chk(this)">
<div>
<asp:Button ID="Button1" UseSubmitBehavior="false" runat="server" OnClientClick="this.value='submitting';this.disabled=true;" OnClick="Button1_Click" Text="Test1" />
<asp:Button ID="Button2" runat="server" OnClick="Button1_Click" Text="Test2" />
<asp:Button ID="Button3" runat="server" OnClientClick="this.value='sorry, the form cant be submitted.';this.disabled=true;" OnClick="Button1_Click" Text="Test3" />
</div>
</form>
</body>
</html>
- 禁用(灰化) Button 后提交的问题
- 禁用(灰化) Button 后提交的问题
- 让Sumbit Button 支持 禁用(灰化)提交
- 让 ASP.NET 2.0 的 Sumbit Button 支持 禁用(灰化)提交
- button 提交后验证不通过仍然提交问题
- Button提交数据后失效的JS(数据提交中……)
- 表单提交后禁用按钮
- 表单提交后禁用按钮
- react native 的button点击变色以及禁用问题
- 设置button的禁用状态
- <button> 元素点击后刷新的问题
- Android之Button问题の禁用失效
- 【转】AS3)灰化显示对象(DisplayObject)的方法 / 图片灰化
- AS3)灰化显示对象(DisplayObject)的方法 / 图片灰化
- button的click事件触发的提交问题
- button在Firefox下点击提交表单(form)的问题
- 关于form表单底下 button自动提交表单的问题
- form表单里面 button标签自动提交表单的问题
- WM_CREATE
- 用户访问数据库的过程
- 敏捷思维: 架构设计中的方法学(2)
- #pragma的一般用法
- 敏捷思维: 架构设计中的方法学(3)
- 禁用(灰化) Button 后提交的问题
- eclipse3.2.1及插件安装基础教程
- Hibernate学习(四):session.save()
- 敏捷思维: 架构设计中的方法学(4)
- 《深入BREW开发》——第三章 编译器基础
- 有关vb.net的调试
- 如何编写代码才能使得效率高
- 请求因 HTTP 状态 401 失败:Unauthorized
- fcs