Отключить кнопку при нажатии

У меня есть кнопка управления. Как только пользователь нажимает на него, событие клика должно срабатывать, а затем кнопка должна быть отключена. Как я могу это сделать? У меня есть возможность использовать JQuery или JavaScript или и то, и другое.

Вот объявление моей кнопки:

<asp:Button 
  ID="Button1" 
  runat="server" 
  Text="Click Me" 
  onclick="Button1_Click"
/> 

На кнопке нажмите код позади, я добавил Response.Write(). Это должно быть выполнено, а затем кнопка должна быть отключена.

Ответы

Ответ 1

По какой-то причине спецификация HTML указывает, что отключенные элементы не должны включаться в запросы POST. Таким образом, если вы используете JavaScript для отключения элемента HTML в событии onclick на стороне клиента, элемент ввода будет отключен, когда браузер выполнит запрос POST, сервер не будет должным образом уведомлен о том, какой элемент поднял обратную передачу, и он выиграл 'fire firewall на стороне сервера.

Если для свойства UseSubmitBehavior установлено значение false, ASP.NET отображает элемент ввода типа вместо обычного ввода типа submit. > что обычно генерируется элемент управления ASP.NET Button. Это важно, потому что нажатие на элемент кнопки не вызывает событие отправки формы браузера.

Вместо того, чтобы полагаться на представление формы браузера, ASP.NET будет вызывать клиентский вызов __doPostBack() внутри этого элемента управления onclick элемента. __doPostBack явно поднимет обратную передачу, независимо от того, какие данные POST попадают в запрос.

Когда обратная передача создается независимо от события отправки браузера, вы освобождаетесь от упомянутого выше хитрости HTML. Затем вы можете установить OnClientClick из "this.disabled = true;", который будет отображаться как "this.disabled = true; __doPostBack ('Button1', '');", и все будет работать по назначению.

Ответ 2

добавить OnClientClick = "this.disabled = true;" к вашей кнопке.

Если вы используете Asp.net Ajax, вам может понадобиться использовать PostBack Ritalin.

Ответ 3

Вы пробовали это?

Добавить OnClientClick = "MyFunction();" к вашей кнопке .NET.

Затем в тегах .aspx script вы добавляете следующую функцию JS:

<script type="text/javascript">
  function MyFunction()
  {
    window.setTimeout(function ()
    {
      // get the button/control to disable using your favourite clientside ...
      // ... control grabbing code snippet ...
      // ... eg. JQUERY $('Button1'), getElementById, etc.)

      document.getElementsByName('Button1').Button1.disabled = true;

      // I've used "getElementsByName" because .NET will render a button with
      // ... a "name" attribute, and not an "id" attribute, by default

    }, 1);
  }
</script>

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

Ответ 4

Вы должны быть осторожны, чтобы вернуться после отключения кнопки через клиент script. Это обычная игра с полями ajax и ввода. Отключение окна ввода предотвращает отправку данных из браузера, даже если вы можете видеть текст внутри него, пока он отключен. Ответ заключается в том, что для этого вам необходимо использовать jquery, чтобы обеспечить выполнение кода на стороне сервера до его отключения.

-Oisin

Ответ 5

// to disable
this.setAttribute('disabled', true); 
// to enable
this.removeAttribute('disabled');

это кросс-браузерное решение

Ответ 6

Существует действительно классное событие для тега тела "<" body onBeforeunload = "buttonId.disabled = true;" " > "

Это событие запускается непосредственно перед отправкой формы, другими словами, ваши данные будут отправлены правильно.

Ответ 7

При использовании метода this.disabled = true убедитесь, что вы проверяете, действительна ли страница перед отключением элемента управления, если у вас есть валидаторы на странице. Если проверка не удалась, вы не сможете повторно включить элемент управления без перезагрузки страницы.

if (Page_IsValid) this.disabled = true;

Ответ 8

   <script type="text/javascript">
     Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
      function BeginRequestHandler(sender, args) {
        document.getElementById('<%= lblMessage.ClientID %>').innerText = "Processing...";
          document.getElementById('<%= btnSubmit.ClientID %>').innerText = "Processing";
         args.get_postBackElement().disabled = true;
           }
           </script>

Добавить Script Тег на странице источника. change Id кнопки в коде. Вы можете отключить кнопку, пока процесс не завершит выполнение.

Ответ 9

вы можете отключить его на стороне сервера

Button1.Enabled = false;