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関数で、コードビハインドを使用する代わりに and に置き換えて、次のValidate(btnFinishId)
ように記述します。Validate()
OnClientClick
<asp:Button OnClientClick="Validate();" "ID="btnFinish" runat="server" Text="Finish" UseSubmitBehavior="false"
CausesValidation="true" CommandName="MoveComplete" CssClass="buttonStyle"/>
関数は実行されますが、もちろん、ボタン ID がないため、私が望むことはしません。誰にも解決策がありますか?