8

から継承しASP.NET buttonsて使用するコントロールがいくつかありますonserverclick

ユーザーが 2 回クリックすると、ボタンは 2 つのサーバー側イベントを発生させます。どうすればこれを防ぐことができますか?

this.disabled='true'クリック後に(属性で)javascriptを介して設定しようとしましonclickたが、最初のポストバックもブロックされます。

4

7 に答える 7

14

ポストバックの制御を無効にする方法については、この例を参照してください。あなたが達成しようとしていることを行うのに役立つはずです。

http://encosia.com/2007/04/17/disable-a-button-control-during-postback/

于 2008-09-08T19:06:11.300 に答える
2

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>

これにより、現在非同期ポストバックがまだアクティブな場合、次のポストバックがキャンセルされます。完璧に動作します。

于 2012-07-13T08:20:56.393 に答える
2

ポストバックで無効になっているボタンを表示する必要はありません。誤って 2 回送信しないようにする必要があります。したがって、サーバー側のアクションの結果としてボタンを無効にしたり非表示にしたりするのは、ゲームではすでに遅すぎます。この時点で、2 番目のリクエストはすでに進行中です。JavaScript を使用するか、サーバー側のコードが 2 回実行されないようにする必要があります。

于 2008-09-08T19:11:53.033 に答える
1

他の誰かが数日前にここのどこかでこれを言いました、そして私は同意します-javascriptを使用して、ボタンを無効にするのではなく、単純に非表示にします。その場所に「スピナー」画像を表示して、何が起こっているかをユーザーに知らせることができます。

于 2008-09-08T19:05:13.767 に答える
1

非表示にする代わりに、javascript を使用してボタンを交換しました。最初のボタンをクリックすると、別の灰色の画像が表示されます。

于 2008-09-08T19:11:02.817 に答える
1

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;"/>
于 2014-08-14T15:52:31.553 に答える
0

たとえば、 btnSave.Enable = false; を試すこともできます。ボタンが押されたとき、クリック イベント ルーチンでボタンの処理が行われる前。有効にするためにリセットする必要がある場合は、再利用のためにボタンをリセットする別のボタンを用意してください。

もう 1 つの方法は、確認付きのボタンを設定して、ユーザーが保存するかどうかを尋ねられるようにすることです。

さらに別の方法として、最初の発生にフラグを立ててから、2 番目の発生にポップアップを設定して、2 回目以降の使用を確認する方法があります。

于 2016-07-11T22:49:15.927 に答える