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

时间:2015-07-04 09:14:56

标签: javascript asp.net telerik popup hidden

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

// 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>");
            }   

上面的代码工作正常。我得到了正确的txtArea&amp;值;从弹出窗口中选择txtAeraId。

当我将“txtAeraId”设为visible =“false”时,会出现问题,这些值不会从子页面传递到父页面。我无法将弹出页面中的选定值从主页面的txtArea和txtAeraId中获取。

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

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

1 个答案:

答案 0 :(得分:1)

使用Visible =“false”的telerik控件(实际上是一般的asp.net控件)会阻止“控件”首先被发送到客户端,因此,它根本不存在,因此为什么你可以找不到它

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

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