から継承しASP.NET buttons
て使用するコントロールがいくつかありますonserverclick
。
ユーザーが 2 回クリックすると、ボタンは 2 つのサーバー側イベントを発生させます。どうすればこれを防ぐことができますか?
this.disabled='true'
クリック後に(属性で)javascriptを介して設定しようとしましonclick
たが、最初のポストバックもブロックされます。
から継承しASP.NET buttons
て使用するコントロールがいくつかありますonserverclick
。
ユーザーが 2 回クリックすると、ボタンは 2 つのサーバー側イベントを発生させます。どうすればこれを防ぐことができますか?
this.disabled='true'
クリック後に(属性で)javascriptを介して設定しようとしましonclick
たが、最初のポストバックもブロックされます。
ポストバックの制御を無効にする方法については、この例を参照してください。あなたが達成しようとしていることを行うのに役立つはずです。
http://encosia.com/2007/04/17/disable-a-button-control-during-postback/
Updatepanel と FormView-Template 内のボタンの場合、次のアプローチを使用します。
<script type="text/javascript">
// Using that prm reference, hook _initializeRequest
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequestBuchung);
// Abfangen von Mehrfachklicks auf Buttons für asynchrone Postbacks im Updatepanel
function InitializeRequestBuchung(sender, args) {
var arrButtonIds = ["ButtonInsert", "ButtonUpdate"];
// Get a reference to the PageRequestManager.
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack() & jQuery.inArray(args.get_postBackElement().id, arrButtonIds) > -1) {
args.set_cancel(true);
}
}
</script>
これにより、現在非同期ポストバックがまだアクティブな場合、次のポストバックがキャンセルされます。完璧に動作します。
ポストバックで無効になっているボタンを表示する必要はありません。誤って 2 回送信しないようにする必要があります。したがって、サーバー側のアクションの結果としてボタンを無効にしたり非表示にしたりするのは、ゲームではすでに遅すぎます。この時点で、2 番目のリクエストはすでに進行中です。JavaScript を使用するか、サーバー側のコードが 2 回実行されないようにする必要があります。
他の誰かが数日前にここのどこかでこれを言いました、そして私は同意します-javascriptを使用して、ボタンを無効にするのではなく、単純に非表示にします。その場所に「スピナー」画像を表示して、何が起こっているかをユーザーに知らせることができます。
非表示にする代わりに、javascript を使用してボタンを交換しました。最初のボタンをクリックすると、別の灰色の画像が表示されます。
Button プロパティ UseSubmitBehavior を false に設定します。次に、ボタンを無効にする OnClientClick 関数を作成します。次のようになります。
<script type="text/javascript">
function disableFunctn(button){
button.disabled = true;
}
</script>
<asp:Button ID="button1" UseSubmitBehavior="false" OnClientClick="disableFunctn(this);"/>
最速の安価な方法:
<asp:Button ID="button1" UseSubmitBehavior="false" OnClientClick="this.disabled=true;"/>
たとえば、 btnSave.Enable = false; を試すこともできます。ボタンが押されたとき、クリック イベント ルーチンでボタンの処理が行われる前。有効にするためにリセットする必要がある場合は、再利用のためにボタンをリセットする別のボタンを用意してください。
もう 1 つの方法は、確認付きのボタンを設定して、ユーザーが保存するかどうかを尋ねられるようにすることです。
さらに別の方法として、最初の発生にフラグを立ててから、2 番目の発生にポップアップを設定して、2 回目以降の使用を確認する方法があります。