按照网上的教程:
// 选择用户
function selectUser() {
layer.open({
type: 2,
title: '选择用户',
shadeClose: true,
shade: 0.8,
area: ['52%', '70%'],
content: '../selectInfo/user_personal_list.aspx', //iframe的url
btn: ['确定', '关闭'],
yes: function (index) {
//当点击‘确定’按钮的时候,获取弹出层返回的值
var res = window["layui-layer-iframe" + index].callbackdata();
$('#txt_user').val(res.title);
$('#userId').val(res.id);
//打印返回的值,看是否有我们想返回的值。
console.log($('#userId').val());
//最后关闭弹出层
layer.close(index);
},
cancel: function () {
//右上角关闭回调
}
});
}
总是会提示:
window["layui-layer-iframe" + index].callbackdata() is not a function
可是子页面中明明声明的有这个函数:
<script type="text/javascript">
var callbackdata = function () {
var data = {
id: $('#couponsID').val(),
title:$('#couponsName').val()
};
return data;
}
</script>
不知道为什么总是获取不到这个函数。最后没办法了转变了一下思路,只能在子页面中直接给父页面赋值了。
//赋值给父级页面并且关闭当前窗口
//文件原始名称是:this.files[index].name
//上传后的文件名称是:res.filename例如:upload/201903/93zone1.jpg
//parent.console.log(res.filename);
parent.$("#filelisttable").append('<tr data-realfilename="'+res.filename+'"><td>'+this.files[index].name+'</td><td><i class="fa fa-close filelistdel"></i></td></tr>');
//--关闭 当前页面 开始--
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
//--关闭 当前页面 结束--