How to run a javascript function before postback of asp.net button

前端 未结 3 1261
醉梦人生
醉梦人生 2020-12-28 19:48

I have an asp.net button which is runat server, there is a function handle that postback of button onclick.

How can I display a \"loading ...\" word in

相关标签:
3条回答
  • 2020-12-28 20:00

    Look at OnClientClick, you can add a call to a js function, or inline JS there.

    Or you can wire into the button with JQuery and display a modal dialog with an async callback.

    0 讨论(0)
  • 2020-12-28 20:04

    Hook up OnClientClick to some javascript function that returns true or false. The postback occurs if it returns true else it is canceled.

      <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>
    
    0 讨论(0)
  • 2020-12-28 20:04

    You could use the onsubmit event of your page's form. This happens before the form is submitted, and will allow you to stop submission of the form if you need by cancel bubbling. In case you need this, the last 2 lines in this example will cancel bubbling across browsers.

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

    The JavaScript above is just for example, however this is (in my opinion) the preferred way to do what you're looking for. It looks something like this (in the center of the screen):

    Loading...

    This will work for any element that raises a PostBack, so you don't have to manually call ShowLoading() on every button or form element you may have on your page. I would replace the contents of ShowLoading() with some real loading functionality and not just the example code I threw together.

    0 讨论(0)
提交回复
热议问题