layer iframe

1. iframe父子操作
2.layer.open() + iframe + form: 回调操作
3.layer.open + iframe + form: 数据传递
4.<iframe> + form:数据反填, 表单反填数据失败
1. iframe父子操作

2.layer.open() + iframe + form: 回调操作

3.layer.open + iframe + form: 数据传递

4.<iframe> + form:数据反填, 表单反填数据失败

1. iframe父子操作

// 获取父页面的值给子页面
var body = layer.getChildFrame('body', index);     //获取子页面的body元素
body.find('#id').val(data.id);        //为子页面id为id的元素赋值


// 在子页面关闭弹出层
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭   


//访问父页面方法
var parentMethodValue = parent.getMethodValue();

//如何从子页面执行刷新父页面操作
parent.location.reload();     // 父页面刷新

2.layer.open() + iframe: 回调操作

父层页面  调用弹框:

$(".header .head_r .psd").click(function(){

     $(".userpop").hide();

     $(".head_r_user").removeClass("active");

     layer.open({

          title: "修改密码",

          type: 2,

          area: '422px',

          maxmin: true,

          fix: true,

          shadeClose: false, //点击遮罩关闭层

          content: 'pop_modifypsd.html'  

     });

})

子页面:

layui.use(['jquery','layer'], function(){

       var $ = layui.jquery,

       layer = layui.layer;

       

       var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引     

       parent.layer.iframeAuto(index);                      // 窗口大小自适应

       //给父页面传值

       $('#cancle').on('click', function(){

           parent.layer.close(index);

       });

       //关闭iframe

       $('#closeIframe').click(function(){

              changePassword();

       });      

})

//修改密码

function changePassword(){

       var old_psw = $("#ori_password").val();

       var new_psw = $("#new_password").val();

       if (new_psw != $("#confirm_password").val()) {

              parent.layer.msg("新密码与确认密码输入不一致");

              return;

       }

       var regex = new RegExp('^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,50}$');

       if(!regex.test(new_psw)){

              parent.layer.msg("密码应为8位以上的数字和字母组合!");

              return;

       }

       $.ajax({

              url : "../../user/changePassword",

              type : "POST",

              asyc : "false",

              data : {

                      new_psw : sha256_digest(new_psw),

                      old_psw : sha256_digest(old_psw)

              },

              success : function(data) {

                      if (data.ret.succeed) {

                             parent.layer.msg('您将标记 [ ' +mobile + ' ] 成功传送给了父窗口');

                     parent.layer.close(index);

                             parent.layer.msg(data.ret.retMsg, {

                                    icon : 1

                             });

                      } else {

                             parent.layer.msg(data.ret.retMsg);

                      }

              }

       });

}

 

 

3.layer.open + iframe + form: 数据传递

问题描述:父页面通过layer.open 打开 iframe页面,传入参数,iframe页面取值失败

解决办法:setTimeout

setTimeout(function(){
    var data = $("#data").val();
    data = data ? JSON.parse($("#data").val()) : data;
    // 根据表单类型生成不同表单内容  默认生成投诉案例
    base.creatReport($);
    if(data && data.formstyle == 1) base.creatArbitrate($);     
    form.val("formCase", data);
},100)

这里引用window.onload,$(function(){}) 是无效的,依然取不到值;

原因:layer.open打开iframe页面, iframe页面因为每次打开重新生成DOM,所以直接赋值给iframe页面不成功,需要等待页面加载完再赋值。

4.<iframe> + form: 数据反填

<iframe src="iframe_case.html" id="iframe" nme="iframe" frameborder="0"></iframe>

document.getElementById("iframe").contentWindow.loadData($,form,base,laydate,data);

function loadData($,form,base,laydate,data){
    ....
}


 

问题描述:通过iframe打开页面,页面内部分元素动态生成,form表单反填数据无效 

解决办法:form 需要是当前页面layui.use导入的才可以,不可以通过上一个页面参数形式传递

document.getElementById("iframe").contentWindow.loadData($,base,laydate,data);



var form = null;

layui.use(['jquery','layer','element','form','laydate'], function(exports){

    form = layui.form

});
// 更新按钮 弹出案例 反填数据方法

function loadData($,base,laydate,data){

    var data = {...}

    form.val("lay-filter", data);

}

 

 

 

 

 

 

 

 

                      });

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值