我需要编写一个从母版页运行的 Javascript 函数,以在内容页中找到 ModalPopup 并将其关闭。以下代码有效,但不是我想要的。我需要使用 mpeEditUser.ClientID 之类的东西,但出现错误。另外,如果我可以在不知道 ModalPopup id 的情况下通过其类型 (ModalPopupExtender) 找到它,那就太好了。有什么建议吗?
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();
}
最佳答案
标签可能因通过另一个页面调用而被搞乱,这发生在我身上。我不知道最适合您的解决方案,但是我解决该问题的方法是首先通过 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。
关于javascript - 如何在 JavaScript 中找到 ModalPopupExtender?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8989199/