ACCESS DENIED
小Z小Z  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 窗体中写入数据即可。

声明:1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
小Z
小Z 关注:0    粉丝:0
【声明】:本站宗旨是为方便站长、科研及外贸人员,请勿用于其它非法用途!站内所有内容及资源,均来自网络。本站自身不提供任何资源的储存及下载,若无意侵犯到您的权利,请及时与我们联系。

发表评论

扫一扫二维码分享