【问题标题】:How to find a ModalPopupExtender in a JavaScript?如何在 JavaScript 中找到 ModalPopupExtender?
【发布时间】:2012-01-24 15:13:41
【问题描述】:

我需要编写一个从母版页面运行的 Javascript 函数,以在内容页面中找到一个 ModalPopup 并关闭它。以下代码有效,但不是我想要的。我需要使用 mpeEditUser.ClientID 之类的东西,但出现错误。此外,如果我能在不知道其 id 的情况下,通过其类型 (ModalPopupExtender) 找到 ModalPopup,那就太好了。有什么建议吗?

 function CloseModalPopup() {
        var mpu = $find('ctl00_ContentPlaceHolder1_mpeEditUser');
        mpu.hide();

    }

这是我的解决方案:(如果您发现任何问题,请告诉我。谢谢) 我在代码隐藏中获取 ModalPopup id,并将其传递给我的 javascript 函数。

在default.master.cs的Page_Load中:

ContentPlaceHolder cph = (ContentPlaceHolder)FindControl("ContentPlaceHolder1");
string sMpeID = (AjaxControlToolkit.ModalPopupExtender)cph.FindControl("mpeEditUser");

在我的 Javascript 函数中:

var mpe = $find('<%=sMpeID%>');
if (mpe != null) {
            mpe.hide();
}

【问题讨论】:

  • "...但我遇到了一个错误。" - 多么有趣。愿意分享错误是什么? =)
  • 对不起。我更新了我的问题。基本上我得到了一个错误 CS0103:名称 'mpeEditUser' 在当前上下文中不存在。

标签: javascript asp.net master-pages modalpopupextender


【解决方案1】:

标签很可能被通过另一个页面调用而弄乱了,这发生在我身上。我不知道最适合您的解决方法,但是我解决此问题的方法是首先通过 javascript 函数找到 mpe,该函数在页面上的所有元素中寻找模糊匹配。

var elemets = document.getElementsByTagName("*");
var mpe;
for (var i = 0; i < elemets.length; i++) {
    var id = elemets[i].id
    if (id.indexOf("mpe") >= 0) {
        mpe = elemets[i];
    }
}

如果页面上有多个 mpe,您可能希望匹配更多的字符串。对我来说,elements 函数只返回了大约 50 个元素,所以开销不算太大。您可能并非如此,但即使您在最终产品中不使用此功能,它也会帮助您发现元素的实际 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多