Dragon
主机之家测评主机之家测评  2019-09-05 23:34 主机之家测评 隐藏边栏 |   抢沙发  342 
文章评分 0 次,平均分 0.0

在“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 窗体中写入数据即可。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

发表评论

扫一扫二维码分享