js 弹出窗口 选值后提交回父级页(不刷新)的文本框

JavaScript022

js 弹出窗口 选值后提交回父级页(不刷新)的文本框,第1张

父窗口代码(parent.html)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Untitled Page</title>

</head>

<body>

<input type="text" name="data_key" id="data_key" />

<input type="text" name="data_value" id="data_value" />

<input type="button" id="open_child_window" value="list_datas"/>

<script type="text/javascript">

window.onload = function(){

//取得打开子窗口的按钮

var openChildBtn = document.getElementById("open_child_window")

//打开新窗口函数

function openNewWindow(url){

window.open(url)

}

//调用打开新窗口函数,指定新窗口地址

function openChildWindow(){

openNewWindow("child.html")

}

//为按钮绑定事件

if (document.all) {

openChildBtn.attachEvent("onclick",openChildWindow)//IE

}else{

openChildBtn.addEventListener("click",openChildWindow)//非IE

}

}

</script>

</body>

</html>

子窗口代码(child.html)这个必须按这个命名,如果要改,需要把父窗口代码里面的child.html也同步改掉

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Untitled Page</title>

<style type="text/css">

body{font-size:12px}

.data_list{background:#ddf}

.data_list td{background:white}

</style>

</head>

<body>

<table cellspacing="1" cellpadding="3" border="0" class="data_list">

<tr>

<td id="data_key_1">data_key_1</td>

<td id="data_value_1">data_value_1</td>

<td><input type="button" id="data_submitor_1" value="submit"/></td>

</tr>

<tr>

<td id="data_key_2">data_key_2</td>

<td id="data_value_2">data_value_2</td>

<td><input type="button" id="data_submitor_2" value="submit"/></td>

</tr>

<tr>

<td id="data_key_3">data_key_3</td>

<td id="data_value_3">data_value_3</td>

<td><input type="button" id="data_submitor_3" value="submit"/></td>

</tr>

<tr>

<td id="data_key_4">data_key_4</td>

<td id="data_value_4">data_value_4</td>

<td><input type="button" id="data_submitor_4" value="submit"/></td>

</tr>

</table>

<script type="text/javascript">

//向父窗口发送数据

function SendDataToParent(key,value){

if (window.opener &&window.opener.document.getElementById("data_key")&&window.opener.document.getElementById("data_value")) {

window.opener.document.getElementById("data_key").value = key

window.opener.document.getElementById("data_value").value = value

}

}

window.onload = function(){

//如果父窗口已经被关闭或者不存在,直接返回

if (!window.opener) return

//遍历所有的数据

for(var i=1i<5++i){

//取得提交按钮

var btn = document.getElementById("data_submitor_" + i.toString())

//如果按钮有效

if (btn) {

//为按钮绑定事件

if(document.all){//IE

//attachEvent响应函数中this指针是指向window而不是指向事件响应对象的,所以需要一个函数来实现对象传递

function GetEventHandle(tag) {

return function () {

var temp = tag.id.split("_")

var index = temp[temp.length-1]

SendDataToParent(document.getElementById("data_key_"+index).innerHTML,document.getElementById("data_value_"+index).innerHTML)

}

}

btn.attachEvent("onclick",GetEventHandle(btn))

}else{//非IE

btn.addEventListener("click",function(){

var temp = this.id.split("_")

var index = temp[temp.length-1]

SendDataToParent(document.getElementById("data_key_"+index).innerHTML,document.getElementById("data_value_"+index).innerHTML)

})

}

}

}

}

</script>

</body>

</html>

我都写了注释的,如果还不清楚就补充问题

简单回答:自己看,不再赘述

用iframe、弹出子页面刷新父页面

iframe

parent.location.reload()

弹出子页面

window.opener.location.reload()

子窗口刷新父窗口

self.window.opener.locaction.reload()

刷新一open()方法打开的窗口

window.opener.location.href = window.opener.location.href

刷新以winodw.showModelDialog()方法打开的窗口

window.parent.dialogArguments.document.execCommand('Refresh')

Response.Write("<script>window.location.href = window.location.href</script>")

刷新本页Response.Write("<script>window.location.href=window.location.href</script>")

刷新父页和本页面:

Response.Write("<script>alert('提交成功!')window.location.href=window.location.hrefwindow.opener.location=window.opener.location</script>")

使用window.returnvalue

在父级页面打开子集页面,可以获取子集的返回值。在子集中给window.returnvalue赋值,将在父级中获得这个值。

父级中这样写:

var returnVal=window.ShowModeDialog(xxxxx)

子集中这样写:

window.returnvalue=input框的值。

父级中的returnVal变量就是你要的值了。

除了这个,还可以使用cookie、sessionstrog等来存储,不过window.returnvalue是最简便也是最适合你的。