在“layer 子窗体关闭后向父窗体传值的办法”一文中我们介绍了在 layer 子窗体向父窗体传值的办法。但是有的时候,我们需要实现layer 子窗体大于父窗体的效果,这种情况下我们的弹窗代码是 parent.layer.open 而不是 layer.open,这时篇头文章中的办法是无效的。那么要怎么实现 layer 子窗体大于父窗体并能通过子窗体向父窗体传值呢?具体方法如下:
假设有页面 A,B,C。其中 A 为主页面、B 为 A 中通过 layer.open 弹出的子窗体,C 为在 B 窗体中通过 parent.layer.open 弹出的子窗体,那么现在 C 窗体已经可以大于 B 窗体了,我们要解决的就是 C 窗体向 B 窗体传值,其实就是篇头文章的一种变通做法。
1.A 页面中定义回调函数:
function callback(id){ $('#layui-layer-iframe1').contents().find('#number').val(id); }
说明,layui-layer-iframe1 为通过审查代码获得的 layer.open 的 B 窗体 ID,经过反复查看确认不会变化,是固定值,这段代码的意思就是当回调函数执行时,将 B 窗体中 id 为 number 的文本框值设置为传过来的参数 id。
2.B 窗体中要接受传值的 html 代码:
3.C 窗体中的函数调用代码:
function select(id){ parent.callback(id); var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); }
说明:C 窗体中的回调代码,执行该函数后回调 A 页面中的函数 callback。
总结:其实就是要理解 layer 弹出层之间的关系,因为通过 parent.layer.open 的方式打开弹窗 C,所以实际上 C 弹窗的父页面是 A,因此执行回调函数要写到 A 中,然后再通过 A 的回调函数向 B 窗体中写入数据即可。
本文为原创文章,版权归主机之家测评所有,欢迎分享本文,转载请保留出处!