如何实现layer双层弹窗子页面向父页面传递数据

发布时间 2023-03-22 21:09:36作者: Zhaiew

如何实现layer双层弹窗子页面向父页面传递数据

方式1:

layer.open({
			  type: 2
			  ,title: '详细'
			  ,content: 'layerWindow/detail.html'  //需要打开的页面链接
			  ,maxmin: true
			  ,area: ['500px', '450px'],
				success: function(layero, index){
          			  var body = layer.getChildFrame('body',index);			//建立父子联系
         				  var iframeWin = window[layero.find('iframe')[0]['name']];
						// iframeWin.method();   //这句话的意思是可以通过ifarmeWin调用子页面的方法
						//		console.log(body.html()) 					//得到iframe页的body内容
						//		body.find('input').val('Hi,我是从父页来的')
						var inputList = body.find('input');     			//取得子页面中input输入框
						//var dataLists= [1000,11111,11,1333,1,1,1,1,1,1,1,1,1,11,,11,1,1];测试数组
						 for(var j = 0; j< inputList.length; j++){			//把父页面的数据放到子页面的input框中
                				body.find(inputList[j]).val(dataLists[j]);
           			}
				}
			}); 

在此方式中由于使用若依框架使用的content是接口传导的导致获取不到其子页面内容,而后我使用获取当前弹出口的方式直接获取layero得到iframe中的内容:

function cron() {
        var url = 'system/rule/cron';
        var height = $(window).height() - 50;
        top.layer.open({
            maxmin: true,
            title: "Cron表达式生成器",
            type: 2,
            area: ['800px', height + "px"], //宽高
            shadeClose: true,
            content: url,
            btn: ['确定','取消'],
            btn1:function (index,layero){
                var cron = $(layero).find('iframe').contents().find("#cron")[0].value;   //******
                $('#corn').val(cron);
                console.log(cron)
                parent.layer.close(index);
            },
            btn2:function(index,layero){
                parent.layer.close(index)
            }
        });
    }