我正在使用用户控件,我需要调用弹出窗口,它会询问一个问题,我需要将响应(true或false)发送回调用弹出窗口的用户控件。我声明了一个隐藏字段来存储客户端的值,因此我可以从后面的代码访问它,然后执行更多代码。我有以下代码:
ASP.Net
<script type="text/javascript">
function confirmNoCallList() {
debugger;
var resp = confirm("¿Seguro/a que desea agregar a este subscriptor a la
lista de 'No Llamar'?");
window.opener.document.getElementById('hfAddToNoCallList').value = resp;
}
</script>
<ajax:TabContainer ID="tbcMyProfile" runat="server" ActiveTabIndex="0" Width="500px">
<ajax:TabPanel ID="tbpInfoCta" runat="server" HeaderText="Información de mi
Cuenta">
<ContentTemplate>
<asp:HiddenField ID="hfAddToNoCallList" runat="server" />
.
.
.
当函数命中window.opener行时,我收到错误。关于如何以正确的方式做到这一点的任何想法?
答案 0 :(得分:1)
window.opener
为您提供了一个名为window.open(...)
的浏览器窗口的引用,以创建当前窗口。如果您未调用window.open
,则开启者将为空。
在您发布的代码段中,JavaScript和隐藏字段位于同一文档中。尝试从行window.opener.
window.opener.document.getElementById ...
答案 1 :(得分:1)
您必须在运行时获取动态ClientID
或将其传递给函数和可以找到它的arg:
document.getElementById('<%= hfAddToNoCallList.ClientID"%>').value = resp;
或
function confirmNoCallList(hiddenField) {
debugger;
var resp = confirm("¿Seguro/a que desea agregar a este subscriptor a la
lista de 'No Llamar'?");
document.getElementById(hiddenField).value = resp;
}