Как запустить функцию javascript перед обратной записью кнопки asp.net

У меня есть кнопка asp.net, которая является сервером runat, есть дескриптор функции, возвращающий кнопку onclick.

Как я могу отобразить слово "loading ..." на странице перед тем, как перейти к процедуре сервера?

Ответ 1

Подключить OnClientClick к некоторой функции javascript, которая возвращает true или false. Возврат сообщения происходит, если он возвращает true, иначе он отменяется.

  <asp:Button id="MyButton" runat="Server" Text="Close" 
                       OnClientClick="return  PromptClose();"/>


  <script type="text/javascript">
   function PromptClose(){
       return prompt("Do you really want to close this window?");
   }
  </script>

Ответ 2

Вы можете использовать событие onsubmit для вашей формы страницы. Это происходит до того, как будет отправлена ​​форма, и позволит вам прекратить подачу формы, если вам нужно, отменив барботирование. В случае, если вам это нужно, последние 2 строки в этом примере будут отменять барботирование между браузерами.

<form runat="server" onsubmit="ShowLoading()">
</form>
<script type="text/javascript">
    function ShowLoading(e) {
        var div = document.createElement('div');
        var img = document.createElement('img'); 
        img.src = 'http://www.oppenheim.com.au/wp-content/uploads/2007/08/ajax-loader-1.gif'; 
        div.innerHTML = "Loading...<br />";
        div.style.cssText = 'position: fixed; top: 30%; left: 40%; z-index: 5000; width: 222px; text-align: center; background: #fff; border: 1px solid #000'; 
        div.appendChild(img);
        document.body.appendChild(div); 

        // These 2 lines cancel form submission, so only use if needed.
        window.event.cancelBubble = true;
        e.stopPropagation();
    }
</script>

JavaScript, приведенный выше, является, например, только тем, что это (на мой взгляд) предпочтительный способ делать то, что вы ищете. Это выглядит примерно так (в центре экрана):

Загрузка...
http://www.oppenheim.com.au/wp-content/uploads/2007/08/ajax-loader-1.gif

Это будет работать для любого элемента, который вызывает PostBack, поэтому вам не нужно вручную вызывать ShowLoading() для каждой кнопки или элемента формы, который у вас может быть на вашей странице. Я бы заменил содержимое ShowLoading() на некоторые реальные функции загрузки, а не только на код кода, который я сбросил вместе.

Ответ 3

Посмотрите на OnClientClick, вы можете добавить вызов функции js или встроенного JS.

Или вы можете подключиться к кнопке с помощью JQuery и отобразить модальное диалоговое окно с асинхронным обратным вызовом.