用open或showModalDialog实现父子页面传值

1 open

如果实现open窗口父子页面传值,在父页面声明一个函数,函数要求要有参数,用来接收子页面传过来的值,子页面通过调用“window.opener.父页面函数”来实现将值传回父页面。

父页面:

//open窗口
            function chooseDept() {
                window.open("listDept.html", "", "width=150px,height=400px");
            }

            function receiveValue(param) {
                var dept = document.getElementById("dept");
                dept.value = param;
            }

子页面:

//open窗口父子页面接传值
        function sure() {
            var dept = document.getElementsByName("dept");
            for(var i=0;i<dept.length;i++) {
                if(dept[i].checked) {
                    window.opener.receiveValue(dept[i].value);
                    window.close();
                }
            }
        }

2 showModalDialog

showModalDialog窗口,它与open窗口类似,但是对于showModalDialog窗口,当弹出时,父页面是不能被使用的,而open窗口正好相反。

声明格式:

window.showModalDialog("路径","窗口名","参数");

如何实现父子页面接传值,在父页面中打开窗口时,要声明一个变量并赋值。

//showModalDiaglog窗口
            function otherChooseDept() {
                var param = window.showModalDialog("listDept.html", "",
                        "dialogWidth=150px;dialogHeight=400px;");
                var dept = document.getElementById("dept");
                dept.value = param;
            }

然后在子页面中,将要传的值赋值给window.returnValue,这样就会把值传给父页面中声明的变量。

//showModalDialog窗口父子页面接传值
        function otherSure() {
            var dept = document.getElementsByName("dept");
            for(var i=0;i<dept.length;i++) {
                if(dept[i].checked) {
                    window.returnValue = dept[i].value;
                    window.close();
                }
            }
        }

下面是测试html代码:

父页面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>addEmployee.html</title>

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="this is my page">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
        <script type="text/javascript">

            //open窗口
            function chooseDept() {
                window.open("listDept.html", "", "width=150px,height=400px");
            }

            function receiveValue(param) {
                var dept = document.getElementById("dept");
                dept.value = param;
            }

            //showModalDiaglog窗口
            function otherChooseDept() {
                var param = window.showModalDialog("listDept.html", "",
                        "dialogWidth=150px;dialogHeight=400px;");
                var dept = document.getElementById("dept");
                dept.value = param;
            }
</script>
    </head>

    <body>
        <form>
            <table align="center">
                <tr>
                    <td>
                        姓名:
                    </td>
                    <td>
                        <input type="text" />
                    </td>
                </tr>
                <tr>
                    <td>
                        性别:
                    </td>
                    <td>
                        <input type="radio" name="sex" />
                        男
                        <input type="radio" name="sex" />
                        女
                    </td>
                </tr>
                <tr>
                    <td>
                        地址:
                    </td>
                    <td>
                        <input type="text" />
                    </td>
                </tr>
                <tr>
                    <td>
                        部门:
                    </td>
                    <td>
                        <input type="text" id="dept" />
                        <input type="button" value="请选择" onclick="otherChooseDept()" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="button" value="确认" />
                    </td>
                    <td>
                        <input type="button" value="返回"
                            onclick="javascript:history.go(-1)" />
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>

子页面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>listDept.html</title>

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    <script type="text/javascript">
        //open窗口父子页面接传值
        function sure() {
            var dept = document.getElementsByName("dept");
            for(var i=0;i<dept.length;i++) {
                if(dept[i].checked) {
                    window.opener.receiveValue(dept[i].value);
                    window.close();
                }
            }
        }

        //showModalDialog窗口父子页面接传值
        function otherSure() {
            var dept = document.getElementsByName("dept");
            for(var i=0;i<dept.length;i++) {
                if(dept[i].checked) {
                    window.returnValue = dept[i].value;
                    window.close();
                }
            }
        }
    </script>
  </head>

  <body>
        <table border="1">
            <tr>
                <td>选择</td>
                <td>部门</td>
            </tr>
            <tr>
                <td>
                    <input type="radio" name="dept" value="市场部"/>
                </td>
                <td>市场部</td>
            </tr>
            <tr>
                <td>
                    <input type="radio" name="dept" value="人事部"/>
                </td>
                <td>人事部</td>
            </tr>
            <tr>
                <td>
                    <input type="radio" name="dept" value="研发部"/>
                </td>
                <td>研发部</td>
            </tr>
            <tr>
                <td>
                    <input type="radio" name="dept" value="财务部"/>
                </td>
                <td>财务部</td>
            </tr>
            <tr>
                <td>
                    <input type="radio" name="dept" value="后勤部"/>
                </td>
                <td>后勤部</td>
            </tr>
            <tr>
                <td clospan="2">
                    <input type="button" value="确定" onclick="otherSure()"/>
                </td>
            </tr>
        </table>
  </body>
</html>
时间: 2024-11-03 21:10:37

用open或showModalDialog实现父子页面传值的相关文章

基于iframe父子页面传值的方法。

之前项目中用layer.js作为弹窗的框架,发现layer.js中大部分弹窗都是通过iframe模拟的.为此,在项目中遇到了不少坑.印象最深的就是父子页面传值的问题.后面经过一段时间的研究.总结出以下几种方法: 一.在子页面的js中直接使用parent获取父级页面中的对象方法.如: $(document).ready(function(){ $("#people_add_cardActiveTime").text(laydate.now(0, 'YYYY-MM-DD 00:00:00'

C#--父子页面传值、刷新(showModalDialog)

父页面: 1 var obj = new Object(); 2 obj.name="name"; 3 var rtnValue=window.showModalDialog("child.aspx",obj,"dialogWidth:500px;dialogHeight:300px;status:no;scrollbars=yes;help:no"); 4 if(rtnValue=="ok"){ 5 window.locat

随笔:ajax传递数组,layui父子页面传值,下来菜单赋值,父页面数据获取,表格数据替换为字符串

一.Ajax向后台传递数组问题:(声明前台我使用的layui框架)例:我们要多前台一个数据表格进行批量删除操作,我们通过复选框选中数据id,将id存入一个数组中,然后利用ajax传递给后台,完成批量删除,再过程中我们需要加上traditional : true代码如下: function batchDel() { var datas; var ids = new Array();// 声明数组 layui.use('table', function() { var table = layui.t

mui 进行父子页面传值以及接收

1.在父级页面进行传值 (my) mui.openWindow({ url: 'a.html', id: 'a', extras: { my: 'listpub' },}); 2.自己页面接收值 mui.plusReady(function() { //plus.webview.currentWebview 为获取父级页面 value = plus.webview.currentWebview().my; });   原文地址:https://www.cnblogs.com/duanzb/p/9

C# 父子页面传值

业务需求是:父页面点击"选择任务"按钮进入任务列表页.(项目进度周报) 父页面如下: 任务列表页: 选择某一个任务,点击"确定"后返回父页面所需数据. 父页面"选择任务" 按钮触发事件. /// <summary> /// 选择任务按钮 /// </summary> /// <param name="sender"></param> /// <param name=&quo

asp.net中父子页面通过gridview中的按钮事件进行回传值的问题

这两天写BS程序,遇到父子页面传值的问题,以前没写过web系统,用了几天时间才将问题解决,总结下记录下来: 问题描述: 父页面A中有一个gridview,每行6个列,有5列中均有一个按钮,单击按钮,会根据列的不同进入不同的子页面,在子页面中有获取数据,并返回父页面的gridview中对应的行的对应列中. 问题关键在于如果确定点击的是gridview的哪一行的哪个按钮,因为数据回传的时候,还要放入该行的该列中. 所以需要考虑一下几个方面: 1.动态添加行,以及各行的各列中的按钮 2.点击某行某列的

关于使用iframe的父子页面进行简单的相互传值

当一个页面使用了iframe作为嵌套时,如何想要将父页面的数据传给iframe子页面,那iframe所指向的呢个子页面是怎么获取呢,又或者子页面的数据要给父页面使用,那么父页面又如何获取子页面的数据呢?下面根据这种情况作了一个简单的demo案例: 父页面是parentPage.html,子页面是childPage.html. 1.情况一:父页面获取子页面传入的数据(子页面给父页面传值) 父页面: //获取子页面传入的数据 function GetChildValue(obj){ document

关于父子页面的交互

转:http://www.cnblogs.com/zhaozhengling/archive/2012/12/04/2801697.html这两天做项目的时候需要实现一个功能,就是点击父页面上的一个超链接或是控件,然后弹出一个新的子页面.在子页面中作出相应的操作,然后将子页面的值传递到父页面,效果图如下: 根据网上的资料用js几句话就可以搞定,可是自己做起来之后发现却没那么简单,网上的说法是当点击这个超链接(此处为文本框)时触发一个事件, window.showModalDialog("要跳转的

【JavsScript】父子页面之间跨域通信的方法

由于同源策略的限制,JavaScript跨域的问题,一直是一个比较棘手的问题,为了解决页面之间的跨域通信,大家煞费苦心,研究了各种跨域方案.之前也有小网同学分享过一篇“跨域,不再纠结” 开始照着尝试时还是有些不够明白的地方,深入了解之后,这里给大家补充一点更具体的做法. 先来看看哪些情况下才存在跨域的问题: 其中编号6.7两种情况同属于主域名相同的情况,可以设置domain来解决问题,今天就不讨论这种情况了. 对于其他跨域通信的问题,我想又可以分成两类: 其一(第一种情况)是a.com下面的a.