layer.open中父页面向子页面传值
1.咱先看图说话
父list.jsp 子operate.jsp
实现的代码
1 在父页面上完成对子页面的数据渲染
function setData(data) {
var lay=layer.open({
type: 2,
title: false,
//closeBtn: 0,
//shade:0,//是否有遮罩效果
area: ['560px', '294px'],//宽,高
//skin: 'layui-layer-nobg', //没有背景色
shadeClose: false,
content: ['operate.do', 'no'],
success: function(layero, index){
var body=layer.getChildFrame('body',index);//少了这个是不能从父页面向子页面传值的
//获取子页面的元素,进行数据渲染
body.contents().find("#attributeNameEn").val(data.attributeNameEn);
body.contents().find('#attributeNameCn').val(data.attributeNameCn);
body.contents().find('#attributeId').val(data.attributeId);
body.contents().find('#remark').val(data.remark);
body.contents().find('#remarkEn').val(data.remarkEn);
let id = '#isValid' + data.isValid;
body.contents().find(id).prop("checked", true);//这是子页面的单选按钮,让其选中
},
});
//重新给指定层设定width、top等 因为它们的小屏幕电脑的弹出层会出现滚动条,所以才用这个方法给加一个overflow: 'visible',属性
layer.style(lay, {
overflow: 'visible',
});
}
2.保存按钮的事件写在子页面的
function saveByajax() {
$.ajax2({
type: 'POST',
url: 'xxxx',
data:{
attributeId:$('#attributeId').val(),
attributeNameEn:$('#attributeNameEn').val(),
isValid:$('input[name="radioInline"]:checked').val(),
},
success: function (r) {
if (r && r.message=='Operate successfully') {
// layer.msg("操作成功!");
setTimeout( function(){
//window.parent.location.href = 'list.do'; 或者
parent.location.reload();//刷新父页面
}, 5 * 100 );//延迟500毫秒
//window.parent.layer.closeAll();关闭弹窗
}else {
// layer.msg("添加失败!");
layer.msg("<spring:message code="msg_Add_failed"/> !");
}
}
})
}
注意:收到小伙伴的私信说,上面例子从父页面不能把值传到子页面去,比如下拉框未选中,单选按钮也未选中
原因:body.contents()这个不能少,还有就是body.contents().find("#XXXX"),这个 xxx 是你子页面的元素的id,不是name
欢迎转载,请注明出处