ASP.NET Webフォームアプリケーションがあります。JavaScriptを使用してクリックすると、ASP.NETテンプレート内に配置されたボタンを無効にします。
私の目標は、複数の送信を避けるために、ユーザーのクリックに応じて送信ボタン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 + "');");
}
をしかし、それは動作しません。ソースコードは、のJavascript機能がを実行しない]をクリックすると、完璧に見えるが、私は、ブラウザによってレンダリングされたページを確認してFirebugのを使用しますが。
私はValidate()
でValidate(btnFinishId)
を交換し、代わりに私が書くOnClientClick
を追加するための背後にあるコードを使用してのJavascriptを機能にした場合:
<asp:Button OnClientClick="Validate();" "ID="btnFinish" runat="server" Text="Finish" UseSubmitBehavior="false"
CausesValidation="true" CommandName="MoveComplete" CssClass="buttonStyle"/>
関数が実行されますが、もちろん、私がやりたいことはありませんボタンIDがないためです。誰にでも解決策がありますか?
ありがとうございます!それは完全に動作します!私はいつか解決策を探して失った!私は通常、MVCとjQueryを使用しているので、ASP.NET WebフォームをJavascriptで変更する必要があるとき、私は本当に不満を感じます! – CiccioMiami
問題ありません!あなたはそれが働いてうれしい:) –