Asp.Net从javascript中的弹出窗口获取值

时间:2011-12-16 13:21:03

标签: javascript asp.net user-controls

我正在使用用户控件,我需要调用弹出窗口,它会询问一个问题,我需要将响应(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行时,我收到错误。关于如何以正确的方式做到这一点的任何想法?

2 个答案:

答案 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;
    }