如何避免页面刷新时的js函数调用

时间:2016-06-20 10:37:21

标签: javascript c# jquery asp.net

我有一个js函数,它从后面的代码调用(在按钮单击事件上),它打开一个模态窗口。按钮单击事件或调用模态窗口的js函数没问题。但是如果我刷新页面,主要问题就出现了。每当我刷新页面时,都会调用js函数而不点击任何按钮并加载模态窗口。

如何在页面刷新时避免加载此模态窗口?

这是我的代码。

<head>
    <script type="text/javascript">
        function showModal() {
            $('#viewOc').modal();
            return false;
        };
    </script>
</head>

<body>
     <asp:button class="btn btn-default" id="btnTextView" runat="server" Text="View as Text" commandArgument="1234" OnCommand="btnTextView_View">   </asp:button>
     <div class="modal fade" id="viewOc" role="dialog">
            <div class="modal-dialog">
                <div class="modal-content">
                   //some content here
                </div>
            </div>
     </div>
</body>

protected void btnTextView_View(object sender, CommandEventArgs e)
        {
            //some processing here
            if (!ClientScript.IsStartupScriptRegistered("JSScript"))
            {
                ClientScript.RegisterStartupScript(this.GetType(), "JSScript",
                @"<script type='text/javascript'>showModal()</script>");
            }
        }

2 个答案:

答案 0 :(得分:0)

如果您共享的代码隐藏中的函数导致JS运行,您可以按如下方式修改它:

protected void btnTextView_View(object sender, CommandEventArgs e)
{
      //some processing here
      if (!ClientScript.IsStartupScriptRegistered("JSScript") && !Page.IsPostBack)
      {
          ClientScript.RegisterStartupScript(this.GetType(), "JSScript",
                @"<script type='text/javascript'>showModal()</script>");
      }
}

编辑:
根据您的评论,我了解如果刷新页面,则会再次触发该按钮的事件。这是网页重新提交请求的已知问题,您应该查看此link来解决您的问题。这很冗长但是完成了工作!

答案 1 :(得分:0)

我不确定OnCommand是否是在此上下文中使用的正确事件。如果您希望通过单击触发事件,请使用click事件:

<asp:button class="btn btn-default" id="btnTextView" runat="server" Text="View as Text" commandArgument="1234" OnClick="btnTextView_View">   </asp:button>

这应该可以解决您在页面刷新时遇到的问题。