layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
网络 2017-09-26 1387
父层:
jsp中:
//页面上添加一个隐藏的输入框待用于被子层设置value,从而将子层的数据传递到此页面
1 | <input type="hidden" id="getValue" name="getValue" value="" /> |
js代码:
//设置function,当执行时,弹出子窗口并传递当前窗口名称
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //弹出子窗口(选择商家) function choseMerchant() { //获取当前窗口名称 var parentName= window.name; /*(由于用的ssm框架)URL对应的是controller方法,并向其传递当前窗口名称,打开的窗口显示页面即 为经过controller方法后返回的页面*/ var url = root + "/adPosition/choseMerchant?parentName="+ parentName; laySum = parent.layer.open({ //设置打开的子窗口效果 type : 2, title : "选择商家", shadeClose : true, shade : 0.5, shift : 0, area : [ '40%', '863px' ], content : url, success: function(layero, index){ } }); } |
子层:
jsp中:
//页面添加的隐藏输入框,存储的值是经过controller方法后返回的父窗口名称,用于区分,将id设置为mainIframeName
1 | <input type="hidden" id="mainIframeName" name="mainIframeName" value="${parentName}"> |
js代码:
//设置function,当执行时,传值并关闭当前窗口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function setvalue() { //得到“mainIframeName”输入框中存储的值 var mainIframeName = $("#mainIframeName").val(); //判断是否为空或者是未定义 if (mainIframeName != "" && mainIframeName != "undefined") { //此处的ifrc和winc的意义可自行查阅 var ifrc = window.parent.frames[mainIframeName]; var winc = ifrc.window || ifrc.contentWindow; try { //设置父窗口隐藏输入框的值为hello world winc.document.getElementById("getValue").value = "hello world!"; } catch (ex) { winc.location.reload(); } } //关闭当前窗口 var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); } |
总结:此方法用于子层直接给父层元素赋值,从而达到传值的效果,关键点在于需要将父层窗口名称传递到子层中。
下一篇:js表单序列化判断空值的实例