javascript - 押し - submit 連打 防止 jquery



ダブルクリックを防ぐためにクリック後asp.netボタンを無効にする (12)

OnClickイベントのボタンを無効にしてから、AJAXコールバックイベントハンドラで再度有効にします。 ここではjQueryを使ってどのように行うのですか?

<script>
$(document).ready(function() {

    $('#buttonId').click(function() {
         $(this).attr('disabled', 'disabled');
         callAjax();
    });

});

function callAjax()
{
    $.ajax({
      url: 'ajax/test.html',
      success: function(data) {
         //enable button
         $('#buttonId').removeAttr('disabled');

      }
    });
}
</script>

ダブルクリックを防ぐためにユーザーがクリックした後に無効にする必要があるASP.NETボタンがあります。 送信が完了したら、再び有効にする必要があります。 誰もこれで私を助けることができますか?



Answer #2

あなたはjavascriptでこれを行うことができます。 あなたのformタグでは、 onsubmit="javascript:this.getElementById("submitButton").disabled='true';"


Answer #3

ここでは、asp.netボタンオブジェクトで動作するソリューションです。 フロントエンドで、次の属性をasp:Button定義に追加します。

<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />

バックエンドでは、クリックイベントハンドラメソッド呼び出しで、このコードを最後に追加します(できればfinallyブロック内にあります)

myButton.Enabled = true;

Answer #4

これは通常のhtmlボタンで動作します。

    <input id="Button1"
    onclick="this.disabled='true';" type="button"
    value="Submit" name="Button1"
    runat="server" onserverclick="Button1_Click">

ポストバックが完了するまでボタンは無効になっており、ダブルクリックはできません。


Answer #5

これを試して、それは私のために働いた

<asp:Button ID="button" runat="server" CssClass="normalButton" 
Text="Button"  OnClick="Button_Click" ClientIDMode="Static" 
OnClientClick="this.disabled = true; setTimeout('enableButton()', 1500);" 
UseSubmitBehavior="False"/>  

その後、

<script type="text/javascript">
function enableButton() {
document.getElementById('button').disabled = false;
}
</script>

"setTimeout"で遅延時間を調整することができます。


Answer #6

上記の解決策のどれも私のために働いていないし、最後に私は最も簡単な方法を見つけました。

button1.enabled = false 

あなたはそれを有効にする必要があるとき。

button1.enabled = true

Answer #7

応答の遅いサーバー側コードのためにダブルクリックを防止したい場合、これは正常に動作します。

<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />

サーバー上の_Click()イベントにThreading.Thread.Sleep(5000)を入れてみると、サーバーがclickイベントを処理している間にボタンが無効になっていることがわかります。

いずれかのボタンを再度有効にするためのサーバーサイドコードは不要です!


Answer #8

私はthisを見つけthis 、それは動作します:

btnSave.Attributes.Add(
    "onclick", 
    "this.disabled = true;" + ClientScript.GetPostBackEventReference(btnSave, null) + ";");

Answer #9

私はボタンを無効にしてポストバックを呼び出すのが好きです。この方法では、ボタンが無効になってもコードが実行されます。

これは私がコードの背後から添付する方法です:

btnProcess.Attributes.Add("onclick", " this.disabled = true; __doPostBack('btnProcess', ''); return false;")

コード内のボタンを再度有効にします:

btnProcess.Enabled = True

Answer #10
<asp:Button ID="btnSend" runat="server" Text="Submit"  OnClick="Button_Click"/>
        <script type = "text/javascript">
            function DisableButton()
            {
                document.getElementById("<%=btnSend.ClientID %>").disabled = true;
            }
            window.onbeforeunload = DisableButton;
        </script>

Answer #11
<script type = "text/javascript">
function DisableButtons() {
    var inputs = document.getElementsByTagName("INPUT");
    for (var i in inputs) {
        if (inputs[i].type == "button" || inputs[i].type == "submit") {
            inputs[i].disabled = true;
        }
    }
}
window.onbeforeunload = DisableButtons;
</script>




asp.net-ajax