私が更新しているページの送信ボタンをダブルクリックしないようにしようとしています。問題は、サーバーサイドの検証が行われているため、ユーザーが移動する前に更新を行う必要があるかどうかを判断する必要があるということです。私は現在私のフォームのための私の送信イベントに次のコードを持っています。サーバー側の検証でダブルクリックを防止する
<asp:Button ID="SubmitPayment" runat="server" OnClientClick="this.disabled='true';" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" />
ここで問題が発生するのは、ページが検証に合格しない場所です。この例では、ボタンを有効にしようとしたすべてが失敗しました。送信ボタンを無効にして修正された情報を再送信することは難しいです。私はそれを再び有効にするために、検証の最後に次の両方の方法を試しました。
SubmitPayment.Enabled = true;
SubmitPayment.Attributes.Add("disabled", "false);
このコントロールを再度有効にするにはどうすればよいですか?これはVisual Studio 2005にあります。事前に感謝します。
-edit- 私が使用したアプローチは次のとおりです。私は無効にされた追加のデコイボタンを追加し、display cssプロパティをnoneに設定しました。その後、送信ボタンを隠し、OnClientClickイベントのデコイボタンを表示するjavascriptを使用しました。最後に、サーバーサイドメソッドの終了は、ボタンのCSSプロパティを更新して後で非表示にして表示します。
コードセグメントは以下のとおりです。おかげで再び助け
function PreventDoubleClick()
{
var sp = document.getElementById("SubmitPayment");
var db = document.getElementById("DecoyButton");
sp.style.display = "none";
db.style.display = "inline";
}
<asp:Button ID="SubmitPayment" runat="server" OnClientClick="javascript:PreventDoubleClick();" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" />
<asp:Button ID="DecoyButton" Enabled="false" runat="server" style="display:none;" Text="Please Wait..."/>
DecoyButton.Style.Add("display", "none");
SubmitPayment.Style.Add("display", "inline");
SubmitPayment.Attributes.Add( "disabled"、 "true");またはSubmitPayment.Attributes.Remove( "disabled"、 "false");仕事をしない? あなたは好奇心の問題があります。すべてをダブルクリックするいたずらについて何をすべきか(確かに、それは彼らのせいではないが、デスクトップインターフェースの設計者の間違いである)。 – mcandre