问题是这样的,easyui的对话框dialog是在iframe页面里弹出的,所以有个问题就是这个弹出的对话框只在iframe页面范围,拖动的时候会被外层挡住。求教,如何才能使对话框弹出在最外层,不会存在被遮挡的问题。
想过几种可能的解决方法,但都没有解决。
1.是把弹框内容写到主页面,但是由于对话框很多,不可能都放到主页面,而且原本对话框就是在iframe页面的,如果全都放到主页面,代码太混乱;
2.网上有用window解决的,调用主页面方法。但是window跟dialog还是不一样的,dialog包含了交互信息,要提交的内容不希望通过主页面调用方法来实现。
3.z-index,设置了iframe里弹出对话框的z-index,但是不起作用。
想过几种可能的解决方法,但都没有解决。
1.是把弹框内容写到主页面,但是由于对话框很多,不可能都放到主页面,而且原本对话框就是在iframe页面的,如果全都放到主页面,代码太混乱;
2.网上有用window解决的,调用主页面方法。但是window跟dialog还是不一样的,dialog包含了交互信息,要提交的内容不希望通过主页面调用方法来实现。
3.z-index,设置了iframe里弹出对话框的z-index,但是不起作用。
父页提供打开框架的方法,iframe调用就行了
function opendDlg(){
//...
}iframe
parent.openDlg()
$('#dlg').dialog({content:content,title:title})
}你传递要显示的内容给openDlg就行了parent.opendDlg('dialog要显示的内容','dialog标题')
对话框的内容就是一些input,提交和取消按钮,我用的是easyui dialog的提交和取消按钮,这些都要写在content里吗?是一个string吗?
对话框的内容就是一些input,提交和取消按钮,我用的是easyui dialog的提交和取消按钮,这些都要写在content里吗?是一个string吗?
是的,你直接放入父页的dlg那个容器中也行,就不需要配置content了
对话框的内容就是一些input,提交和取消按钮,我用的是easyui dialog的提交和取消按钮,这些都要写在content里吗?是一个string吗?
是的,你直接放入父页的dlg那个容器中也行,就不需要配置content了
对话框的内容就是一些input,提交和取消按钮,我用的是easyui dialog的提交和取消按钮,这些都要写在content里吗?是一个string吗?
是的,你直接放入父页的dlg那个容器中也行,就不需要配置content了
不能直接写到父页面里,因为提交和取消按钮是要携带input内容的,而且每个对话框的提交和取消按钮携带的信息都是不一样的。
父页面:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="../JS/jquery-easyui-1.4/themes/gray/easyui.css" rel="stylesheet" />
</head>
<body>
<iframe src="callParentDialog.html" style="width: 300px; height: 200px; border: 1px green solid;"></iframe>
<div style="display: none;">
<div id="dialog">
<input id="test" type="text" value="这里的值将传回去" />
<div id="ddd"><!--这里将接收子页面过来的控件--></div>
</div>
</div>
</body>
</html>
<script src="../JS/jquery-easyui-1.4/jquery.min.js"></script>
<script src="../JS/jquery-easyui-1.4/jquery.easyui.min.js"></script>
<script type="text/javascript">
function openDialog(callback, setText, container) {
$('#ddd').append(setText);//将子页面的控件附加到对话框里面
$('#dialog').dialog({
title: '弹窗示例,关闭后回写数据',
onClose: function () {
//这里回传一个对象回去,也可以传单个的值啥的
callback({ returnValue: document.getElementById('test').value });
setText.value = "从父页面回写子页面对象";
$(container).append(setText);
},
modal:true
});
}
</script>
子页面:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<input type="button" value="打开窗体" onclick="openDig();" /><br />
接收后回写值:<input id="ret" type="text" /><br />
父页面写入值:<span id="sss"><input id="getText" type="text" value="这个是子页面的控件" /></span>
</body>
</html>
<script type="text/javascript">
function openDig() {
parent.openDialog(function (v) {
document.getElementById('ret').value = v.returnValue;
}, document.getElementById('getText')
, document.getElementById('sss'));
}
</script>
效果:
<div id="dlg"
style="width: 800px; height: 400px;"></div>function opendDlg(content,title){
$('#dlg').dialog({content:content,title:title})
}子Iframe:
var content=$('<iframe id="pdfViewIframe" frameborder="0" scrolling="no" style="width: 100%; height: 100%;" src=""></iframe>');
parent.opendDlg(content,'文档预览')