Подтвердить что ты не робот

Отключить кнопку asp.net после нажатия, чтобы предотвратить двойной щелчок

У меня есть кнопка ASP.NET, которую мне нужно отключить после того, как пользователь нажмет на нее, чтобы предотвратить двойной щелчок. По завершении отправки он должен быть включен снова. Может ли кто-нибудь помочь мне с этим?

4b9b3361

Ответ 1

Я нашел этот, и он работает:

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

Ответ 2

Вот решение, которое работает для объекта кнопки asp.net. На переднем конце добавьте эти атрибуты в свой asp: Определение кнопки:

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

В обратном конце в вызове метода обработчика события клика добавьте этот код в конец (желательно в блок finally)

myButton.Enabled = true;

Ответ 3

Проверьте эту ссылку, самый простой способ и не отключите проверки.

http://aspsnippets.com/Articles/Disable-Button-before-Page-PostBack-in-ASP.Net.aspx

Если у вас есть, например,

  <form id="form1" runat="server">
      <asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Clicked" />
  </form>

Затем вы можете использовать

  <script type = "text/javascript">
  function DisableButton() {
      document.getElementById("<%=Button1.ClientID %>").disabled = true;
  }
  window.onbeforeunload = DisableButton;
  </script>

Чтобы отключить кнопку, если и после проверки была выполнена успешно, так же, как страница выполняет обратную передачу сервера.

Ответ 4

Вы можете использовать клиентское onclick для этого:

yourButton.Attributes.Add("onclick", "this.disabled=true;");

Ответ 5

<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>

Ответ 6

Если вы хотите предотвратить двойное нажатие из-за медленного ответа на серверный код, это прекрасно работает:

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

Попробуйте помещать Threading.Thread.Sleep(5000) в событие _Click() на сервере, и вы увидите, что кнопка отключена на время, когда сервер обрабатывает событие click.

Не нужно, чтобы код на стороне сервера снова включал кнопку!

Ответ 7

Отключите кнопку в событии 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>

Ответ 8

с помощью jQuery:

$('form').submit(function(){
    $(':submit', this).click(function() {
        return false;
    });
});

Ответ 9

Попробуй, это сработало для меня

<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"

Ответ 10

Вы можете сделать это с помощью javascript. в тэге form, onsubmit="javascript:this.getElementById("submitButton").disabled='true';"

Ответ 11

Это работает с обычной кнопкой html.

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

Кнопка отключена до тех пор, пока не будет завершена обратная передача, предотвращая двойной щелчок.

Ответ 12

Мне нравится отключать кнопку и вызывать обратную передачу, так что код по-прежнему запускается после того, как кнопка отключена.

Вот как я привязываюсь от кода:

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

Затем снова включите кнопку в коде:

btnProcess.Enabled = True

Ответ 13

<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>

Ответ 14

Если кто-то заботится, я нашел это сообщение изначально, но я использую сборку ASP.NET в Validation на странице. Решения работают, но отключите кнопку, даже если она была проверена. Вы можете использовать этот следующий код, чтобы его можно было отключить, только если он прошел проверку страницы.

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Submit" OnClientClick=" if ( Page_ClientValidate() ) { this.value='Submitting..'; this.disabled=true; }" UseSubmitBehavior="false" />

Ответ 15

Это решение работает, если вы используете валидаторы asp.net:

<script language="javascript" type="text/javascript">
function disableButton(sender,group)
{
    Page_ClientValidate(group);
    if (Page_IsValid)
    {
        sender.disabled = "disabled";
        __doPostBack(sender.name, '');
    }
}</script>

и измените кнопку:

<asp:Button runat="server" ID="btnSendMessage" Text="Send" OnClick="btnSendMessage_OnClick" OnClientClick="disableButton(this,'theValidationGroup')" CausesValidation="true" ValidationGroup="theValidationGroup" />

Ответ 16

ни одно из вышеперечисленных решений не работает для меня, и, наконец, я нашел самый простой способ сделать.

button1.enabled = false 

когда вам нужно включить его, просто сделайте это.

button1.enabled = true