如何在回发asp.net按钮之前运行javascript函数

时间:2009-06-30 01:52:56

标签: asp.net

我有一个asp.net按钮,它是runat服务器,有一个函数句柄,可以回滚按钮onclick。

如何在进入服务器程序之前在页面中显示"loading ..."字?

3 个答案:

答案 0 :(得分:23)

OnClientClick连接到某个返回true或false的javascript函数。如果返回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>

答案 1 :(得分:9)

您可以使用页面表单的onsubmit事件。这是在提交表单之前发生的,如果您需要通过取消冒泡,将允许您停止提交表单。如果您需要此功能,此示例中的最后两行将取消浏览器中的冒泡。

<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只是例如,但是(在我看来)这是你正在寻找的首选方式。它看起来像这样(在屏幕的中央):

  

加载中
  

这适用于任何引发PostBack的元素,因此您不必在页面上的每个按钮或表单元素上手动调用ShowLoading()。我会将ShowLoading()的内容替换为一些真正的加载功能,而不仅仅是我汇总的示例代码。

答案 2 :(得分:3)

查看OnClientClick,您可以添加对js函数或内联JS的调用。

或者你可以使用JQuery连接到按钮并显示带有异步回调的模态对话框。