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

3
目前,我有一个非常简单的div,它具有display:none;属性。当页面加载时,我调用$("#MyDiv").show();使div弹出并在延迟后向用户显示。从那里,他们可以输入表格信息并使用asp.net按钮提交。
一旦用户输入信息并提交表格,它将返回到同一页,但然后会再次运行JavaScript函数,并再次显示div。如何在postback后禁用此函数?
我知道您可以使用以下代码:
if (Page.IsPostBack){}

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

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

有什么想法吗?谢谢。
好的,我想出了一种方法来实现它。 我基本上将一个带有值为 N 的隐藏输入字段设置如下: 然后我使函数评估并将输入字段的值设置为 Y,如下所示:
function Password() {
        var val = document.getElementById("IsFormSubmitted");
        if(val.value == "N")
        {
            setTimeout(function () { $("#MyDiv").show(); }, 1500);
            val.value = "Y";
        }
    }; 

感谢您提供的指导。 :)

通过在客户端设置cookie或localstorage - undefined
看看它是否有用 https://msdn.microsoft.com/zh-cn/library/z9h4dk8y(v=vs.110).aspx - undefined
在if(!Page.IsPostBack)内部,添加RegisterStartupScript将您的函数添加到页面中。 - undefined
你的页面加载是否需要延迟?如果不需要,给你的div添加runat="server"属性,并赋予一个ID。这样,当页面首次加载时,你的div就会显示出来。然后在IsPostBack中,隐藏你的div:divID.Style.Add("display", "none")。 - undefined
嗯,好的,我会尝试处理这些回应,并在完成后与您联系。您认为将Page.IsPostBack代码放在aspx.cs文件中还是仅放在aspx文件中的JavaScript中更好呢? - undefined
2个回答

2
也许你可以考虑这种方法——在你的aspx页面中添加一个HiddenField控件,标记表单是否已经提交。
<asp:hiddenfield id="hfIsFormSubmitted" value="" runat="server"/>

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


谢谢你,Woody。通过你的示例,我找到了一种解决方法使其正常工作。我已经将它添加到原始问题中。 - undefined

2
有更好的方法来实现您想要的结果。 1. 不要将 $("#MyDiv").show(); 包含在 $(document)ready... 中。相反,
void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
       ScriptManager.RegisterStartupScript(this, this.GetType(), "showdiv", "$("#MyDiv").show();", true);
    }
}

将包含所有控件的 div 放入 UpdatePanel 中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接