layer相关使用

父子页面传参数

转自:https://blog.csdn.net/babyxue/article/details/76854106html

一、父页面打开子页面并向子页面传参数

 
 
function setChooseValues(ret){ var oView = document.getElementById("userName"); var oValue = document.getElementById("userIds"); var i = 0; if( ret != null){ oValue.value=""; oView.value=""; oView.title=""; for( x in ret){ i++; oView.title=oView.title + ret[x].name+","; oValue.value=oValue.value+ret[x].id+","; oView.value = oView.value+ret[x].name+"\n"; } if(i==0){ oView.value=""; } } } function OpenFrame( oValue, oView) { var dialogArgumentsA = new Array(oValue.value , spitToString(oView)); var url = "${rootPath}/page/system/roleallot/role_allot.jsp"; layer.open({ type: 2, skin: 'layui-layer-lan', title: '选择人员', fix: false, shadeClose: false, maxmin: true, id:'selectUser', move: false, closeBtn:2, //如下代码为打开窗口添加按钮 
            /* btn: ['肯定', '取消'], btnAlign: 'c', yes: function(index, layero){ /* //layer.closeAll();//关闭全部弹出层 //var parentWin = layero.find('iframe')[0]; var parentWin = layer.getChildFrame('body', index); alert(parentWin); parentWin.contentWindow.doOk(); //layer.close(index);//这块是点击肯定关闭这个弹出层 }, */ area: ['750px', '450px'], content: url, success: function(layero, index){ var body = layer.getChildFrame('body', index); var iframeWin = window[layero.find('iframe')[0]['name']]; //获得iframe页的窗口对象,执行iframe页的方法:iframeWin.method();  var res = window["layui-layer-iframe" + index].method(); //或者这样调用子页面的方法
                var ids = dialogArgumentsA[0].split(","); var names = dialogArgumentsA[1].split(","); for (var i = 0; i < ids.length; i++ ) { if ('' != ids[i]) { var option = $("<option>").val(ids[i]).text(names[i]); body.find('select').append(option); } } } }); } 

 

二、子页面向父页面传参数并关闭弹窗

function newBuildReturnValue(selectName){ var ret = new Array(); $("#"+selectName+" option").each(function(){ //遍历全部option 
              var value = $(this).val();   //获取option值 
              var text = $(this).text(); if(text!=''){ var o = new Element(value, text, 0); ret.push(o); } }); return ret; } //点击肯定向子页面传参并关闭窗口 
    function doOk(){ var ret = newBuildReturnValue("select"); parent.setChooseValues(ret);  //执行父页面的方法 var index = parent.layer.getFrameIndex(window.name); //得到父页面的Index parent.layer.close(index); //关闭父页面层 } //点击取消关闭窗口 
      
    function doCancel(){ var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); } 

layer弹出层的关闭问题 

转自https://www.cnblogs.com/ssh-html/articles/6698298.html ajax

就是在执行添加或修改的时候,须要将数据提交到后台进行处理,这时候添加成功以后最理想的状态是关闭弹出层而且刷新列表的数据信息,以前一直想实现这样,可一直没有成功,今天决定好好弄一弄,在仔细看过layer的帮助手册以及查阅资料以后,有了如下的解决办法:app

1、关闭弹出窗

  这是layer官网给出的帮助手册,讲解的比较详细ssh

分红两种状况:jsp

一、弹出层不是新的页面的时候,直接得到该弹窗的索引,而后执行close方法ui

layer.close();this

二、弹出窗是新的页面的时候url

var index=parent.layer.getFrameIndex(window.name);spa

parent.layer.close(index);.net

2、关闭弹窗以后刷新父页面

  例如:在增长用户的时候,增长会弹出一个新的弹窗页面,增长成功以后会有提示性的小的alert,在点击肯定以后,弹窗页面关闭,而且刷新用户列表的页面数据。

  只须要在关闭弹窗的时候加这个window.parent.location.reload();//刷新父页面

 

 

多层iframe弹出区域问题

  默认layer.open只能在父页面的范围内展示,如需在顶层显示,不限制显示的范围需使用top。

top.layer.open({ type: 2, title: '标题', shadeClose: true, shade: 0.3, area : ['850px' , '450px'], content: 'http://sentsin.com' //这里content是一个URL,
            });

  显示在父窗口:

parent.layer.open({ type: 2, title: '标题', shadeClose: true, shade: 0.3, area : ['850px' , '450px'], content: 'http://sentsin.com' //这里content是一个URL,
            });

 

子窗自动高度问题

  如子窗口无ajax,不会改变高度,能够在父窗口中增长:

success: function (layero, index) { layer.iframeAuto(index); },

  不然须要在子窗口ajax加载完毕后执行:

parent.layer.iframeAuto(parent.layer.index);

  其中parent.layer.index会得到父窗口最新打开的index。

相关文章
相关标签/搜索