使用 Javascript 单击时禁用放置在 ASP.NET 模板内的按钮
Disable Button placed inside an ASP.NET template upon click using Javascript
I havea an ASP.NET Web Forms application.
我的目标是在用户单击时禁用提交按钮btnFinish
,以避免多次提交。
<asp:Button ID="btnFinish" runat="server" Text="Finish" UseSubmitBehavior="false"
CausesValidation="true" CommandName="MoveComplete" CssClass="buttonStyle"/>
Javascript 函数是:
function Validate(btnFinishId) {
btnObj = document.getElementById(btnFinishId)
if (Page_IsValid) {
btnObj.disabled = true
}
else {
alert('Page has some validation error');
}
// this is to prevent the actual submit
e.preventDefault();
return false;
};
btnFinish
放置在 ASP.NET 向导控件的FinishNavigationTemplate
内。因此,为了避免运行时错误,我需要以编程方式获取控件的ClientID
,然后将其添加到按钮的OnClientClick
事件中:
Button btFinish = MyWizard.FindControl("FinishNavigationTemplateContainerID$btnFinish") as Button;
if (btFinish != null){
btFinish.Attributes.Add("onclientclick", "Validate('" + btFinish.ClientID + "');");
}
但它不起作用。我使用Firebug来检查浏览器呈现的页面,但是尽管源代码看起来很完美,但单击Javascript函数时不会执行。
如果在 Javascript 函数中,我将Validate(btnFinishId)
替换为 Validate()
,而不是使用后面的代码来添加我编写的OnClientClick
:
<asp:Button OnClientClick="Validate();" "ID="btnFinish" runat="server" Text="Finish" UseSubmitBehavior="false"
CausesValidation="true" CommandName="MoveComplete" CssClass="buttonStyle"/>
该函数已执行,但当然不会执行我想要的操作,因为缺少按钮 Id。有人有解决方案吗?
你走在正确的轨道上。这样的事情应该有效:
<script type="text/javascript">
validate = function(btn){
//trigger client-side validation
var valid = Page_ClientValidate("");
//disable the button if the form is valid
btn.disabled = valid;
//trigger postback if the form is valid
//otherwise do nothing
return valid;
}
</script>
<asp:Button ID="btnFinish" runat="server" Text="Finish" OnClientClick="return validate(this);" OnClick="btnFinish_Click" ... />
它看起来有点倒退,但你可以像这样缩短函数:
<script type="text/javascript">
validate = function(btn){
btn.disabled = Page_ClientValidate("");
return btn.disabled;
}
</script>
一种方法是在页面上创建一个普通的HTML按钮,使用jQuery添加附加点击事件。然后,可以使用 css 隐藏 .net 按钮。
在 html buttom 的单击事件中,可以执行所有 .net 按钮单击事件。
$("#yourbutton").trigger("click");
相关文章:
- 借助asp.net验证或java脚本对多个文本进行验证
- 将Javascript数组发送到控制器ASP.NET MVC
- ASP.NET通过单击JavaScript按钮触发c#事件
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 从javascript调用asp.net codebehind函数
- 使用javascript的Asp.net内容占位符
- 获取ASP.NET Ajax Timer状态
- ASP.NET网络摄像头显示
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- asp.net,包括iss上的javascript slow
- 选择不在GridView-ASP.NET中激发
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 使用ASP.NET将谷歌地图添加到项目中,并从数据库中检索位置
- 有什么“;错误的”;将javascript放在asp.net表单上,而不是放在单独的文件中
- 将Javascript日期转换为ASP.NET日期格式
- C#asp.net mvc Set CheckBoxFor已检查的具有Model Value的属性
- 如何使用javascript vb.net asp.net关闭web表单
- 在Ext.net (ASP.NET)中上传完成事件
- 以编程方式滚动/移动到.net asp:listview控件中的一个项目