JavaScript 弹出子窗体并返回结果到父窗体的实现代码


Posted in Javascript onMay 28, 2016

思路:用window.showModalDialog方法获取到弹出子窗体的引用,再在子页面用window.returnValue="***"来返回结果。

示例代码:(用jQuery简化实现)

父页面: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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>父页面</title>
<mce:script language="javascript"><!--
 
function showmodal()
{  
var strReturn = window.showModalDialog("son.html",null,"dialogWidth:800px;dialogHeight:600px;help:no;status:no"); 
var s="您选择了:";
for(var i=0;i<strReturn.length;i++)
{
	s+=strReturn[i]+",";
	}
alert(s);

}
// --></mce:script>
</body>
</html>

子页面 son.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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子窗体</title>
<mce:script type="text/javascript" src="jquery-1.4.2.min.js" mce_src="jquery-1.4.2.min.js"></mce:script>
<mce:script type="text/javascript"><!--
var result;
$(function(){
		  $("#send").click(function(){
									 var result=new Array();
											$("[name=a]:checkbox:checked").each(function(){
												result.push($(this).val());									 
																						 });																	
									 window.returnValue=result;
									 window.close();
									 });
		  });
// --></mce:script>
</head>
<body>
<p>
<input type="checkbox" name="a" value="苹果" />苹果
<input type="checkbox" name="a" value="橘子" />橘子
<input type="checkbox" name="a" value="香蕉" />香蕉

<INPUT type="button" value="提交" id="send" /> 

</p>
</body>
</html>

总结:

 参数传递:

1.   要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:
-------------------------------

parent.htm

<script>
     var obj = new Object();
     obj.name="51js";
     window.showModalDialog("son.htm",obj,"dialogWidth=200px;dialogHeight=100px");
</script>

son.htm

<script>
     var obj = window.dialogArguments
     alert("您传递的参数为:" + obj.name)
</script>

2.   可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

parent.htm

<script>
     str =window.showModalDialog("son.htm",,"dialogWidth=200px;dialogHeight=100px");
     alert(str);
</script>

son.htm

<script>
     window.returnValue="http://blog.csdn.net/a497785609";
</script>

扩展:

在.net中,可以通过这种方式来实现AJAX效果。当子页面传递所要选择的参数后,父页面可以实现ICallbackEventHandler接口,直接将获取到的值传回服务器端。或者用UpdatePanel的Load事件来扑捉到传递过来的参数,从而继续进行服务器端处理。

以上这篇JavaScript 弹出子窗体并返回结果到父窗体的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype1.5 rc2版指南最后一篇之Position
Jan 10 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
Oct 23 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
js实现各种复制到剪贴板的方法(分享)
Oct 27 Javascript
JavaScript中Math对象的方法介绍
Jan 05 Javascript
jQuery加密密码到cookie的实现代码
Apr 18 jQuery
JS实现元素上下左右移动效果
Oct 18 Javascript
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
微信小程序调用微信支付接口的实现方法
Apr 29 Javascript
如何基于原生javaScript生成带图片的二维码
Nov 21 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 Javascript
ant design vue 表格table 默认勾选几项的操作
Oct 31 Javascript
JS模态窗口返回值兼容问题的完美解决方法
May 28 #Javascript
js弹出窗口返回值的简单实例
May 28 #Javascript
JS获取子窗口中返回的数据实现方法
May 28 #Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 #Javascript
Bootstrap3.0学习教程之JS折叠插件
May 27 #Javascript
全面解析多种Bootstrap图片轮播效果
May 27 #Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
May 27 #Javascript
You might like
php上的memcache和memcached两个pecl库
2010/03/29 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
小议Javascript中的this指针
2010/03/18 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
工程售后服务承诺书
2014/05/21 职场文书
出国签证在职证明
2014/09/20 职场文书
2014年团总支工作总结
2014/11/21 职场文书
检讨书怎么写
2015/01/23 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
vue基于Teleport实现Modal组件
2021/05/31 Vue.js
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server