iframe框架,dialog获取父窗体及窗体元素
获取父窗体内对象 — $.currentIframe()
首先,在使用layer.open打开的页面内使用
var index = parent.layer.getFrameIndex(window.name);
获取当前所打开框架的索引序号,并把此序号传送给下一级打开的窗口页面,那么在这个页面上使用:
var $obj = $.currentIframe().frames['layui-layer-iframe'+index];
就可以获取到上一级页面的所有元素对象
- 例子:
打开“详情”页
function detail(keyValue) {
layer.open({
id: 'Detail',
type: 2,
title: '详情',
shadeClose: true,
anim: 7,
isOutAnim: 2,
move: false,
offset: 'rb',
area: ['70%', '100%'],
content: '../../Manage/Detail?keyValue=' + keyValue
})
}
在“详情”页上打开另一页面“反馈”页
function feedback() {
var index = parent.layer.getFrameIndex(window.name);
dialogOpen({
id: 'FeedbackForm',
title: '反馈',
width: '400px',
height: '320px',
url: '/Manage/FeedbackForm?index =' + index ,
callBack: function (iframeId) {
top.frames[iframeId].AcceptClick();
}
})
}
在“反馈”页上调用“详情”页上的元素及各对象
//保存
function AcceptClick() {
$.SaveForm({
...
success: function () {
if (keyValue) {
var $obj = $.currentIframe().frames['layui-layer-iframe'+index];
var nowTime = new Date();
var addTime = nowTime.Format("yyyy-MM-dd HH:mm");
if (postData["FeedbackStatus"] == 1) {
if (postData["Content"] == "")
postData["Content"] = "正常通过";
$.currentIframe().$("#gridTable").trigger("reloadGrid");
}
var jsonStr = '{"Attachment":\"' + postData["Attachment"] + '\","Content":\"' + postData["Content"] + '\","CreateTime":\"' + addTime + '\","CreateUserName":""}';
$obj.$("#newData").val(jsonStr);
$obj.$("#newData").trigger("click");
} else {
$.currentIframe().$("#gridTable").trigger("reloadGrid");
}
}
})
}