如何在页面 Page.IsPostBack 之后禁用 JavaScript 函数

How to disable a JavaScript function after page Page.IsPostBack

本文关键字:之后 JavaScript 函数 IsPostBack Page      更新时间:2023-09-26

目前,我有一个非常简单的div,它有一个显示:none; property。当页面加载时,我调用 $("#MyDiv").show();使div 弹出并在延迟时向用户显示。从那里,他们可以在表单中输入信息并使用 asp.net 按钮提交。

一旦用户输入信息并提交表单,它将回发到同一页面,但随后它将再次运行 JavaScript 函数,并再次显示div。回发后如何禁用此功能?

我知道您可以使用以下代码:

if (Page.IsPostBack){}

但我不确定如何禁用该功能。这是我的函数显示div的样子,非常简单:

function testpopup() {
        setTimeout(function () { $("#MyDiv").show(); }, 1500);
    };

有什么想法吗?谢谢。

好的,我想出了一个办法。我几乎设置了一个隐藏的输入字段,其值为 N,如下所示:

<input type="hidden" id="IsFormSubmitted" value="N" runat="server" />

然后我让函数计算并将输入字段的值设置为 Y,如下所示:

'

function Password() {
        var val = document.getElementById("IsFormSubmitted");
        if(val.value == "N")
        {
            setTimeout(function () { $("#MyDiv").show(); }, 1500);
            val.value = "Y";
        }
    }; 

感谢您的所有指导:)

也许您也可以考虑这种方法 - 在 aspx 页中添加一个 HiddenField 控件,它在其中标记表单是否已提交。

<asp:hiddenfield id="hfIsFormSubmitted" value="" runat="server"/>

这样,一旦触发提交按钮OnClick事件,您就可以为隐藏字段分配一个值,例如 hfIsFormSubmitted.Value = "submitted"; .然后在 JS 代码中检查此值,以确定 show() 函数是否需要运行。

有更好的方法来实现你想要的结果。
1. 请勿将$("#MyDiv").show();包含在$(document)ready...中。相反

void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
       ScriptManager.RegisterStartupScript(this, this.GetType(), "showdiv", "$("#MyDiv").show();", true);
    }
}
  1. 将包含所有控件的div 放入 UpdatePanel。