我有一个 ASP.NET Web 窗体应用程序。
我的目标是在用户点击时禁用提交按钮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
放置在FinishNavigationTemplate
一个 ASP.NET 向导控件中。因此,为了避免运行时错误,我需要以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。有人有解决方案吗?