读书人

基础JS有关问题 关于关闭子页同时

发布时间: 2012-01-14 20:02:35 作者: rapoo

基础JS问题 关于关闭子页,同时为父页中的 textbox 传值的问题! 100 分,立刻结!!

我要实现这样的功能:

-----------------------------

父页 parent.aspx 中,点击页面内按钮 value= "选择街道 " 后,调用js 函数function PopupCatSel() ,实现弹出窗口子页 PopChild.aspx

然后,在 子页 PopChild.aspx 中点击其中的一个链接,调用子页内的 js 函数retForm,实现关闭本身, 同时把参数传回到父页  parent.aspx  中的html 元素中去。


父窗口 parent.aspx ,其中一段代码如下:


function PopupCatSel()
{
var selProdWnd=window.open( "PopChild.aspx ", "new ", "resizable=yes,width=580,height=320,top=0 ");
if(selProdWnd.opener== null)
selProdWnd.opener = self;
return (false);
}

<INPUT TYPE= "hidden " name= "StreetID " readonly>
<INPUT TYPE= "hidden " name= "AreaID " value= "4 ">
<INPUT TYPE= "text " autocomplete= "off " NAME= "Street2 " readonly>

然后其中有一个 html 按钮,实现弹出窗口子页 PopChild.aspx

<INPUT name= "cat " onclick= "return(PopupCatSel()) " type= "button " value= "选择街道 " >

---------------------------------------------------


弹出的子窗口 PopChild.aspx 代码如下:


function retForm(AreaID,StreetID,AreaName,StreetName)
{
if (!opener) return true;
opener.document.forms[0].AreaID.value = AreaID;
if (!opener) return true;
opener.document.forms[0].StreetID.value = StreetID;
if(opener.document.forms[0].Street)
opener.document.forms[0].Street.value = AreaName+ " > > "+ StreetName;
opener.document.forms[0].Street2.value = AreaName+ " > > "+ StreetName;

self.close();
return false;
}


然后,有超链接调用以上 js 函数
<a href= " " onClick= "return retForm( '4 ', '338 ', '南岗区 ', '阿河街 ') "> 阿河街 </a>
<a href= " " onClick= "return retForm( '4 ', '339 ', '南岗区 ', '鞍山街 ') "> 鞍山街 </a>

---------------------------------------


实现关闭子页,同时把参数回传给父页

现在的问题是:子页中的 js 函数中的这段代码:

opener.document.forms[0].AreaID.value = AreaID;

是为了给父页中的  <INPUT TYPE= "hidden " name= "StreetID " readonly>  赋值,
但是我想给父页中的一个
<asp:TextBox id= "TextBox1 " runat= "server "> </asp:TextBox>
赋值,那

opener.document.forms[0].AreaID.value = AreaID;

要改成什么样的呢,我试过以下方式,均不好使:
1 document.getElementById( "TextBox1 ").value = AreaID;
2 opener.document.forms[0].getElementById( "TextBox1 ").value = AreaID;

以上两种写法全不好使,请教各位高人一下,这段 js 代码要如何修改呢?



[解决办法]
opener.getElementById( "TextBox1 ").value = AreaID;
[解决办法]
再不行的话在父窗口写个

function setValue(str){
document.getElementById( "TextBox1 ").value =str;


}

子窗口

opener.setValue( 'xxxxx ');

[解决办法]
window.opener.document.getElementById( "TextBox1 ").value = AreaID;
window.close();

我是这样写的,可以呀
[解决办法]
try ->

// parent.aspx
// js
window.onload = function() {
var myTextBox = document.getElementById( ' <% =TextBox1.ClientID %> ');
}


// child.aspx
// js
// ...
opener.myTextBox.value = "hello world ";
// ...
window.close();
[解决办法]
try---->

document.getElementById( ' <%=TextBox1.ClientID %> ').value;
[解决办法]
再不行的话在父窗口写个

function setValue(str){
document.getElementById( "TextBox1 ").value =str;
}

子窗口

opener.setValue( 'xxxxx ');

=========

这个方式 8 错 !!!
专门定义一个方法,公开给子页面

同时,注意使用

document.getElementById( ' <% =TextBox1.ClientID %> ')

读书人网 >asp.net

热点推荐