大概流程是 点了添加按钮以后,弹出一个窗口, 然后填入相关数据,点击确定 ,然后关闭该窗口
回到刚才的列表页面 .
我想关闭子窗口的时候 ,在父窗口(列表页面)同时刷新显示出刚才添加的数据 . 不知道该怎么办了 .
在论坛找了好多资料 都不行..
部分代码:
子窗口的js
点击确定以后调用这个方法 ----
function tosave(){
var form = document.getElementById("form");
form.action = document.getElementById("_ContextPath").value + "/keep/BaoYang/save?";
form.submit();
window.close();
}
同时<body onUnload="javascrip:reshow();">
function reshow(){
window.opener.location.reload();
}
求达人解决 谢谢!
14 个解决方案
#1
1、打开子窗口
2、在子窗口中对父窗口的变量进行复制
3、关闭子窗口
--这是父窗口中,点击“添加人员”弹出子窗口--
--这是子窗口中,对父窗口的变量进行赋值,赋值后关闭子窗口--
2、在子窗口中对父窗口的变量进行复制
3、关闭子窗口
--这是父窗口中,点击“添加人员”弹出子窗口--
<td class="tdConOne">
<input type="text" id="number" name="number" class="input" disabled="disabled" />
<font color="red"> *</font>
<input type="button" value="添加人员" class="button"
onclick="openwin('*.do',700,550)"/>
</td>
//这个函数是打开一个新的窗口
function openwin(url,wwidth,wheight)
{
var x=(screen.Width-wwidth)/2;
var y=(screen.Height-wheight)/2;
window.open(url, '', 'toolbars=0, scrollbars=0, location=0,
statusbars=0, menubars=0, resizable=0, width='+wwidth+',
height='+wheight+', left='+x+', top='+y);
}
--这是子窗口中,对父窗口的变量进行赋值,赋值后关闭子窗口--
//从子窗口中给父窗口中的变量赋值
opener.document.getElementById('number').value=valueNumber;
opener.document.getElementById('personIds').value=values;
window.close(); //关闭子页面
#2
2、在子窗口中对父窗口的变量进行
赋值
#3
$("#addForm").ajaxSubmit({
beforeSubmit:function () {
$("#saveBtn").attr("disabled",true);
},
success:function (data) {
if(data == "ok") {
alert("增加成功");
flushParentPage();
window.close();
}
if(data == "error") {
alert("增加失败");
}
$("#saveBtn").attr("disabled",false);
},
complete:function () {
$("#saveBtn").attr("disabled",false);
},
error : function() {
$("#saveBtn").attr("disabled",false);
alert("请求错误");
}
});
}
js里面写个这个,我也看不太懂 ,反正就这么写的
function flushParentPage() {
var pageNo = 1;
try {
pageNo = window.opener.document.getElementById("pageNo").value;
var url = window.opener.document.getElementById("url").value;
if(url.indexOf("?") != -1) {
url += "&pageNo=" + pageNo;
} else {
url += "?pageNo=" + pageNo;
}
window.opener.document.queryForm.setAttribute("action", url);
} catch (err) {
}
window.opener.document.queryForm.submit();
}
function closeOpenPage() {
window.close();
}
beforeSubmit:function () {
$("#saveBtn").attr("disabled",true);
},
success:function (data) {
if(data == "ok") {
alert("增加成功");
flushParentPage();
window.close();
}
if(data == "error") {
alert("增加失败");
}
$("#saveBtn").attr("disabled",false);
},
complete:function () {
$("#saveBtn").attr("disabled",false);
},
error : function() {
$("#saveBtn").attr("disabled",false);
alert("请求错误");
}
});
}
js里面写个这个,我也看不太懂 ,反正就这么写的
function flushParentPage() {
var pageNo = 1;
try {
pageNo = window.opener.document.getElementById("pageNo").value;
var url = window.opener.document.getElementById("url").value;
if(url.indexOf("?") != -1) {
url += "&pageNo=" + pageNo;
} else {
url += "?pageNo=" + pageNo;
}
window.opener.document.queryForm.setAttribute("action", url);
} catch (err) {
}
window.opener.document.queryForm.submit();
}
function closeOpenPage() {
window.close();
}
#4
不是有parent吗
#5
父窗口中的js片段
//xxAction是你要打开页面前的逻辑处理,再在action的配置文件中跳转到你要打开的jsp页面
open("xxAction","","menubar=no,toolbar=no,status=no,width=500,heigth=300");
在子窗口添加一个确定按钮触发一个事件,在js代码中最后加上下面代码
//opener表示的是父窗口
window.opener.document.getElementById("xxx").value = mgrno;
window.close();
//xxAction是你要打开页面前的逻辑处理,再在action的配置文件中跳转到你要打开的jsp页面
open("xxAction","","menubar=no,toolbar=no,status=no,width=500,heigth=300");
在子窗口添加一个确定按钮触发一个事件,在js代码中最后加上下面代码
//opener表示的是父窗口
window.opener.document.getElementById("xxx").value = mgrno;
window.close();
#6
上面的xxx是你父窗口中要赋的值。mgrno是子窗口选中的值。我忘记改过来了
#7
谢谢几位的回答 不过 我的父窗口是一个table
在子窗口添加完成以后 我想让刚刚添加的数据直接添加到table里。。
在子窗口添加完成以后 我想让刚刚添加的数据直接添加到table里。。
#8
#9
首先你先拿到子窗口的数据,然后再把它们赋值到父窗口页面,至于是不是table,那你就在《td》<span id="a"></span></td>就行,获取值的方法在网上找找,很多
#10
我给楼主一个思路吧:
1.弹出子窗口时,向server发送数据
2.server端处理完,如果是成功向数据库插入一条记录,返回相应标识。返回的数据一般是一端js代码,此js中执行关闭窗口的操作,如果插入了新数据就刷新父窗口的列表
3.如果子窗口是用 window.open 方法弹出,通过 parent 这个关键字就可以 访问到父窗口
1.弹出子窗口时,向server发送数据
2.server端处理完,如果是成功向数据库插入一条记录,返回相应标识。返回的数据一般是一端js代码,此js中执行关闭窗口的操作,如果插入了新数据就刷新父窗口的列表
3.如果子窗口是用 window.open 方法弹出,通过 parent 这个关键字就可以 访问到父窗口
#11
parent.window.close();
parent.window.location.reload();
parent.window.location.reload();
#12
<script type="text/javascript">
function ref()
{
window.onbeforeunload=function window.onbeforeunload(){
if (document.body.clientWidth-event.clientX<21||event.altKey||event.ctrlKey){
window.opener.location.reload();
}
}
}
</script>
如果是按钮关闭子窗口直接调用ref函数即可
function ref()
{
window.onbeforeunload=function window.onbeforeunload(){
if (document.body.clientWidth-event.clientX<21||event.altKey||event.ctrlKey){
window.opener.location.reload();
}
}
}
</script>
如果是按钮关闭子窗口直接调用ref函数即可
#13
别用弹出窗口了,用div层吧....
#14
#1
1、打开子窗口
2、在子窗口中对父窗口的变量进行复制
3、关闭子窗口
--这是父窗口中,点击“添加人员”弹出子窗口--
--这是子窗口中,对父窗口的变量进行赋值,赋值后关闭子窗口--
2、在子窗口中对父窗口的变量进行复制
3、关闭子窗口
--这是父窗口中,点击“添加人员”弹出子窗口--
<td class="tdConOne">
<input type="text" id="number" name="number" class="input" disabled="disabled" />
<font color="red"> *</font>
<input type="button" value="添加人员" class="button"
onclick="openwin('*.do',700,550)"/>
</td>
//这个函数是打开一个新的窗口
function openwin(url,wwidth,wheight)
{
var x=(screen.Width-wwidth)/2;
var y=(screen.Height-wheight)/2;
window.open(url, '', 'toolbars=0, scrollbars=0, location=0,
statusbars=0, menubars=0, resizable=0, width='+wwidth+',
height='+wheight+', left='+x+', top='+y);
}
--这是子窗口中,对父窗口的变量进行赋值,赋值后关闭子窗口--
//从子窗口中给父窗口中的变量赋值
opener.document.getElementById('number').value=valueNumber;
opener.document.getElementById('personIds').value=values;
window.close(); //关闭子页面
#2
2、在子窗口中对父窗口的变量进行
赋值
#3
$("#addForm").ajaxSubmit({
beforeSubmit:function () {
$("#saveBtn").attr("disabled",true);
},
success:function (data) {
if(data == "ok") {
alert("增加成功");
flushParentPage();
window.close();
}
if(data == "error") {
alert("增加失败");
}
$("#saveBtn").attr("disabled",false);
},
complete:function () {
$("#saveBtn").attr("disabled",false);
},
error : function() {
$("#saveBtn").attr("disabled",false);
alert("请求错误");
}
});
}
js里面写个这个,我也看不太懂 ,反正就这么写的
function flushParentPage() {
var pageNo = 1;
try {
pageNo = window.opener.document.getElementById("pageNo").value;
var url = window.opener.document.getElementById("url").value;
if(url.indexOf("?") != -1) {
url += "&pageNo=" + pageNo;
} else {
url += "?pageNo=" + pageNo;
}
window.opener.document.queryForm.setAttribute("action", url);
} catch (err) {
}
window.opener.document.queryForm.submit();
}
function closeOpenPage() {
window.close();
}
beforeSubmit:function () {
$("#saveBtn").attr("disabled",true);
},
success:function (data) {
if(data == "ok") {
alert("增加成功");
flushParentPage();
window.close();
}
if(data == "error") {
alert("增加失败");
}
$("#saveBtn").attr("disabled",false);
},
complete:function () {
$("#saveBtn").attr("disabled",false);
},
error : function() {
$("#saveBtn").attr("disabled",false);
alert("请求错误");
}
});
}
js里面写个这个,我也看不太懂 ,反正就这么写的
function flushParentPage() {
var pageNo = 1;
try {
pageNo = window.opener.document.getElementById("pageNo").value;
var url = window.opener.document.getElementById("url").value;
if(url.indexOf("?") != -1) {
url += "&pageNo=" + pageNo;
} else {
url += "?pageNo=" + pageNo;
}
window.opener.document.queryForm.setAttribute("action", url);
} catch (err) {
}
window.opener.document.queryForm.submit();
}
function closeOpenPage() {
window.close();
}
#4
不是有parent吗
#5
父窗口中的js片段
//xxAction是你要打开页面前的逻辑处理,再在action的配置文件中跳转到你要打开的jsp页面
open("xxAction","","menubar=no,toolbar=no,status=no,width=500,heigth=300");
在子窗口添加一个确定按钮触发一个事件,在js代码中最后加上下面代码
//opener表示的是父窗口
window.opener.document.getElementById("xxx").value = mgrno;
window.close();
//xxAction是你要打开页面前的逻辑处理,再在action的配置文件中跳转到你要打开的jsp页面
open("xxAction","","menubar=no,toolbar=no,status=no,width=500,heigth=300");
在子窗口添加一个确定按钮触发一个事件,在js代码中最后加上下面代码
//opener表示的是父窗口
window.opener.document.getElementById("xxx").value = mgrno;
window.close();
#6
上面的xxx是你父窗口中要赋的值。mgrno是子窗口选中的值。我忘记改过来了
#7
谢谢几位的回答 不过 我的父窗口是一个table
在子窗口添加完成以后 我想让刚刚添加的数据直接添加到table里。。
在子窗口添加完成以后 我想让刚刚添加的数据直接添加到table里。。
#8
#9
首先你先拿到子窗口的数据,然后再把它们赋值到父窗口页面,至于是不是table,那你就在《td》<span id="a"></span></td>就行,获取值的方法在网上找找,很多
#10
我给楼主一个思路吧:
1.弹出子窗口时,向server发送数据
2.server端处理完,如果是成功向数据库插入一条记录,返回相应标识。返回的数据一般是一端js代码,此js中执行关闭窗口的操作,如果插入了新数据就刷新父窗口的列表
3.如果子窗口是用 window.open 方法弹出,通过 parent 这个关键字就可以 访问到父窗口
1.弹出子窗口时,向server发送数据
2.server端处理完,如果是成功向数据库插入一条记录,返回相应标识。返回的数据一般是一端js代码,此js中执行关闭窗口的操作,如果插入了新数据就刷新父窗口的列表
3.如果子窗口是用 window.open 方法弹出,通过 parent 这个关键字就可以 访问到父窗口
#11
parent.window.close();
parent.window.location.reload();
parent.window.location.reload();
#12
<script type="text/javascript">
function ref()
{
window.onbeforeunload=function window.onbeforeunload(){
if (document.body.clientWidth-event.clientX<21||event.altKey||event.ctrlKey){
window.opener.location.reload();
}
}
}
</script>
如果是按钮关闭子窗口直接调用ref函数即可
function ref()
{
window.onbeforeunload=function window.onbeforeunload(){
if (document.body.clientWidth-event.clientX<21||event.altKey||event.ctrlKey){
window.opener.location.reload();
}
}
}
</script>
如果是按钮关闭子窗口直接调用ref函数即可
#13
别用弹出窗口了,用div层吧....