JavaScript 弹出子窗体并返回结果到父窗体

思路:用window.showModalDialog方法获取到弹出子窗体的引用,再在子页面用window.returnValue="***"来返回结果。

示例代码:(用jQuery简化实现)

父页面:parent.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>父页面</title>
<mce:script language="javascript"><!--

function showmodal()
{
var strReturn = window.showModalDialog("son.html",null,"dialogWidth:800px;dialogHeight:600px;help:no;status:no");
var s="您选择了:";
for(var i=0;i<strReturn.length;i++)
{
s+=strReturn[i]+",";
}
alert(s);

}
// --></mce:script>
</body>
</html>

子页面 son.html 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子窗体</title>
<mce:script type="text/javascript" src="jquery-1.4.2.min.js" mce_src="jquery-1.4.2.min.js"></mce:script>
<mce:script type="text/javascript"><!--
var result;
$(function(){
$("#send").click(function(){
var result=new Array();
$("[name=a]:checkbox:checked").each(function(){
result.push($(this).val());
});
window.returnValue=result;
window.close();
});
});
// --></mce:script>
</head>
<body>
<p>
<input type="checkbox" name="a" value="苹果" />苹果
<input type="checkbox" name="a" value="橘子" />橘子
<input type="checkbox" name="a" value="香蕉" />香蕉

<INPUT type="button" value="提交" id="send" />

</p>
</body>
</html>

总结:

 参数传递:
1.   要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:
-------------------------------
parent.htm
<script>
         var obj = new Object();
         obj.name="51js";
         window.showModalDialog("son.htm",obj,"dialogWidth=200px;dialogHeight=100px");
</script>
son.htm
<script>
         var obj = window.dialogArguments
         alert("您传递的参数为:" + obj.name)
</script>
-------------------------------
2.   可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:
------------------------------
parent.htm
<script>
         str =window.showModalDialog("son.htm",,"dialogWidth=200px;dialogHeight=100px");
         alert(str);
</script>
son.htm
<script>
         window.returnValue="http://blog.csdn.net/a497785609";
</script>

扩展:

在.net中,可以通过这种方式来实现AJAX效果。当子页面传递所要选择的参数后,父页面可以实现ICallbackEventHandler接口,直接将获取到的值传回服务器端。或者用UpdatePanel的Load事件来扑捉到传递过来的参数,从而继续进行服务器端处理。

 

时间: 2024-12-29 17:22:04

JavaScript 弹出子窗体并返回结果到父窗体的相关文章

JavaScript 弹出子窗体并返回结果到父窗体的实现代码_jquery

思路:用window.showModalDialog方法获取到弹出子窗体的引用,再在子页面用window.returnValue="***"来返回结果. 示例代码:(用jQuery简化实现) 父页面:parent.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional

JavaScript弹出窗口方法汇总_javascript技巧

本文实例汇总了常用的JavaScript弹出窗口方法,供大家对比参考,希望能对大家有所帮助.详细方法如下: 1.无提示刷新网页: 大家有没有发现,有些网页,刷新的时候,会弹出一个提示窗口,点"确定"才会刷新. 而有的页面不会提示,不弹出提示窗口,直接就刷新了. 如果页面没有form, 则不会弹出提示窗口 如果页面有form表单, a)<form  method="post" ...>     会弹出提示窗口 b)<form  method=&quo

javascript弹出拖动窗口_javascript技巧

可以拖动的弹出窗口,在很多网页上都可以见到,非常的人性化,下面通过一段javascript代码就可以实现弹出拖动窗口,废话不多说了,直接贴代码了. <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.jb51.net/" /> <title>

javascript弹出窗口实现代码_javascript技巧

很多网页都实现了弹出窗口,使用方面,特别的人性化,本文就大家介绍javascript实现弹出窗口特效,具体代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>弹出窗口</title> <script src="js/jquery-1.11.1.js"></sc

javascript弹出模式窗体

问题描述 javascript弹出模式窗体 用window.showModalDialog()弹出模式窗体怎样写只允许有一个,比如: 我现在是这样的,我们一个电话系统,别人打电话来就弹出窗体,现在第一个电话来了就弹出第一个窗体,挂机后第一个窗体不关闭,然后第二个电话来了就弹出第二个窗体,但是我想要第一个窗体自动关闭 解决方案 你挂断电话的时候关闭不就行了..window.close() 解决方案二: 用div模拟模式窗口,控制刷新或者关闭. 解决方案三: 在子窗体应用的文件的head区之间添加代

父窗全能使用-弹出子窗体后,要求父窗体能继续使用,并且打开其它程序时能够复盖子窗体,不知道哪位大神有好办法!

问题描述 弹出子窗体后,要求父窗体能继续使用,并且打开其它程序时能够复盖子窗体,不知道哪位大神有好办法! 解决方案 思路: 1.将弹出窗体去掉 2.将扩展字段的页面写在当前页面panel中,点击隐藏显示panel

JAVA 关于子父窗体的问题 JDesktopPane里弹出子窗体JInternalFrame,但是要求不能弹出重复的子窗体

问题描述 我想实现在JDesktopPane里弹出子窗体JInternalFrame,但是要求不能弹出重复的子窗体,比如下面代码第一次点击"查询窗体"菜单按钮弹出一个查询窗体,再次点击"查询窗体"菜单按钮时就不让查询窗体弹出,要是点击别的按钮弹出别的窗体,以下是我的代码希望哪位高手请指教importjava.awt.event.*;importjavax.swing.*;publicclassTestMDIextendsJFrameimplementsActionL

c++-MFC对话框程序通过按钮弹出子对话框,如何初始化子窗口

问题描述 MFC对话框程序通过按钮弹出子对话框,如何初始化子窗口 要实现的功能就是点击按钮,用dlg.DoModal()弹出子对话框,在子对话框中有CListControl控件,要对CListControl控件进行数据的初始化,但是无法对其进行初始化.子对话类中已经添加了OnInitDialog()方法,感觉没有执行这个方法,求解. 点击按钮事件代码: void CMFCPaikeDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CDialogEx::

在父窗口上弹出子窗口,子窗口关闭刷新父窗口

问题描述 一.父窗口上:<ahref="#"onclick="OpenWin(this)"srclink="<%#"Employee_Update.aspx?E_id="+Eval("E_id")%>">修改</a>对应的JS:<script>functionOpenWin(obj){varlink=obj.srclink;varheight=parseInt