将值从弹出 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>
如何将值从弹出 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>