保存上传到asp:fileupload的文件时,是否可以阻止window.onbeforeunload

时间:2016-09-07 06:12:38

标签: javascript jquery asp.net file-upload updatepanel

我在aspx页面上设置window.onbeforeunload

docker exec -it XXX bash

我将用户控件引用到我的aspx页面。在我的Ascx控件中,我有一个fileupload和asp按钮。

一旦我上传了一个文件并点击按钮保存它,在它击中文件后面的代码之前,由于某种原因,javascript函数ShowMessage()会弹出。 有什么方法可以限制这种情况的发生。当我上传文件并点击按钮保存时,我不需要弹出这条消息。请建议我如何解决

Ascx.code:

  <script type="text/javascript">
              window.onbeforeunload = ShowMessage;

              function ShowMessage()
      {   
          alert("Do you want to close?")
      }
</script>

3 个答案:

答案 0 :(得分:1)

您可以定义一个重置DisableMessage事件处理程序的函数onbeforeunload

<script type="text/javascript">
    window.onbeforeunload = ShowMessage;

    function DisableMessage() {
        window.onbeforeunload = null;
    }

    function ShowMessage() {
        return "Do you want to close?";
    }
</script>

并在按钮的OnClientClick事件中调用该函数:

<asp:Button ID="btnsave" runat="server" OnClientClick="DisableMessage();" ... />

顺便说一句,只需在ShowMessage中返回一个字符串(如上所示),onbeforeunload事件处理程序就可以在所有浏览器中运行,但如果您调用alert则不是这种情况。

答案 1 :(得分:0)

似乎问题是页面上的任何链接在点击时都会触发onb​​eforeunload,除非它是指向同一页面的链接。

在每个链接的onclick事件中添加“return false”(控件中的大多数元素都是触发javascript但不会去任何地方的链接)。这是我在页面上放置的代码。

$('#id').click(function (e) {
                return false;
            });

答案 2 :(得分:0)

将javascript更改为

 <script type="text/javascript">
 window.onbeforeunload = ShowMessage;

 function ShowMessage()
 {   if(this.id.indexOf("btnsave") == -1)
         alert("Do you want to close?")
 }
 </script>

这将检查id为“btnsave”的内容是否正在调用该函数。