将值从弹出 window 传递到父 window 的隐藏文本框

passing value from popup window to hidden text box of parent window

如何将值从弹出 window 传递到父页面中的隐藏文本框。当文本框可见时,值将正确显示在主页中。但是当我隐藏文本框时,值没有正确地从子页面传递到父页面。

// main page
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script language="javascript" type="text/javascript">
            function OpenWindow(sender, args) {                
                var areaName = $find("<%= txtArea.ClientID %>").get_value(); 
                retVal = window.open("show_area.aspx?areaName=" + areaName, null, "left=150px,menubar=no, top=150px, width=800px, height=570px, scrollbars=yes, status=no, resizable=no");               
                retval.focus();
        }
        </script>
</telerik:RadCodeBlock>
<table>
<tr>
    <td> Area Name: </td>
    <td> 
        <telerik:RadTextBox ID="txtArea" runat="server"></telerik:RadTextBox>       
    </td>
    <td>
        <telerik:RadButton ID="btnsearch" Text="Search" runat="server" AutoPostBack="false" OnClientClicked="OpenWindow" > </telerik:RadButton> 
        <telerik:RadTextBox ID="txtAeraId" runat="server" />
    </td>
</tr>
</table>

弹出页面

// pop up page
 <script language="javascript" type="text/javascript">
        function LinkToMainWindow(a, b) {
            try {

                debugger;
                window.opener.document.getElementById('ctl00_UserContentPlaceHolder_txtAeraId').value = a;
                window.opener.document.getElementById('ctl00_UserContentPlaceHolder_txtArea').value = b;
            }
            catch (e) { }
            self.close();
        }
    </script>   

/// code behind logic  /////

if (e.CommandName == "select_area")
            {
                ClientScript.RegisterStartupScript
                    (typeof(Page), "FillAddress", "<script language=JavaScript>LinkToMainWindow('" + area_code + "','" + area_name + "');</script>");
            }   

以上代码运行良好。我从弹出 window 中获得了 txtArea 和 txtAeraId 的正确值。

当我使 "txtAeraId" visible="false" 时出现问题,值没有从子页面传递到父页面。我无法从弹出页面获取所选值到主页的 txtArea 和 txtAeraId。

<telerik:RadTextBox ID="txtAeraId" runat="server" Visible="false" />

我尝试调试 javascript 函数 LinkToMainWindow,它工作正常。但在主页中未正确检索值 txtArea 和 txtAeraId。 为什么会这样?

telerik 控件(实际上,通常是 asp.net 控件)与 Visible="false" 将首先阻止 "control" 被发送到客户端,因此,它不会根本不存在,所以你找不到它的原因

尝试删除 visible=false 并使用使用(内联)隐藏的包含元素隐藏元素 CSS

<div style="display:none;">
  <telerik:RadTextBox ID="txtAeraId" runat="server" Visible="false" />
</div>