0

我似乎无法弄清楚如何从我的代码隐藏中触发 javascript 函数。

这是我的aspx页面中的javascript...

<script type="text/javascript">
...
function HidePopup() {
  $(function() {
    $("#popup").dialog("close");
  });
});

我有一个类似的函数,它是为LinkBut​​ton 事件ShowPopup触发的。OnClientClick那是有效的。但是,在按下此按钮启动的函数结束时,我想隐藏 JQuery 对话框。我尝试了以下方法...

ScriptManager.RegisterStartupScript(Me, Me.GetType, "HidePopup", "HidePopup();", True)

Page.ClientScript.RegisterStartupScript(Me.GetType(), "HidePopup", "HidePopup();")

我假设我需要第一个(我正在使用 AjaxControlToolkit 和这个特定的按钮,并且<div>在更新面板中),但似乎没有一个隐藏对话框。我没有错误,所以我有点迷失在这里。有任何想法吗?需要更多信息?提前致谢。

编辑:所以我的问题并不是真的 javascript 没有启动,我alert(message)在我的HidePopup()函数中放入了一个正在关闭的函数,所以我的问题似乎只是与这条线有关......

$("#popup").dialog("close");

div的定义为...

<div id="popup" style="display:none;"></div>

有人认为这有什么问题吗?

4

1 回答 1

0

非常感谢各位,我解决了这个问题。以防其他人在这里绊倒......

由于我正在使用UpdatePanel,我不得不使用ScriptManager.RegisterStartupScript(<UpdatePanelID>, <UpdatePanelID>.GetType(), "HidePopup", "HidePopup();")- 记下@VeselinVasilev 的回答,以在函数调用中使用 UpdatePanel 的名称。

最重要的是,我必须修改实际启动弹出窗口的方法。似乎 DOM 正在失去对对话框的引用。我创建了一个全局变量,并在创建时将其分配给 Dialog。然后我可以用它来显示/隐藏对话框。

var popupDialog;

function ShowPopup(message) {
    $("#popup").html(message);
    popupDialog = $("#popup").dialog({
                    title: "Working",
                    modal: true,
                    dialogClass: "no-close"
    });
};
function HidePopup() {
    popupDialog.dialog("close");
};

如果有人对此有任何疑问或有任何疑问,请务必告诉我。

于 2015-02-05T21:21:48.880 回答