最近做了一个小小的聊天室的项目,在添加好友的时候用到了window.showmodaldialog()
在A.jsp中的点击链接弹出B.jsp进行添加好友分组类型,并且把添加好友分组类型产生的Id和名字返回到A.jsp中并添加到页面中的下拉菜单中,在网上找了许多资料,但都很散,所以自己整理了一份。
环境(struts+spring+hibernate+dwr)
A.jsp(父窗口)
<script type="text/javascript">
function addFriendType()
{
//打开进行好友类型添加的页面进行添加,并获得返回值
var type=window.showModalDialog('system/addFriendType.jsp',window,'dialogwidth:200px;dialogheight:35px;help:0;center:yes;resizable:0;status:0;scroll:yes');
if(type!=undefined)//如果返回的不是undefined就添加到下拉菜单中
{
document.getElementById('friendTypeId').options.add(new Option(type[1],type[0]));
}
}
</script>
<form action="" name="myform" id="myform">
<br>
<input type="hidden" id="userId" value="${user.userId}">
<input type="hidden" id="friendId" value="${friend.userId}">
<table align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>好友分组:
<select name="friendTypeId" id="friendTypeId">
<logic:notEmpty name="friendTypeList">
<logic:iterate id="friendType" name="friendTypeList">
<option value="${friendType.friendTypeId}">${friendType.friendTypeName}</option>
</logic:iterate>
</logic:notEmpty>
</select>
<a href="#" onclick="addFriendType();">新建分组</a>//单击调用添加好友分组类型的方法
</td>
</tr>
</table>
</form>
addFriendType.jsp(子窗口,添加好友类型的页面)
<script type="text/javascript">
function addFriendType()
{
var friendTypeName=document.getElementById('friendTypeName').value;
if(friendTypeName=='')
{
alert('请输入好友分组名称');
}
else
{
//获得父窗体的值,并进行添加
var userId=window.dialogArguments.document.getElementById('userId').value
var selectValue=window.dialogArguments.document.getElementById('friendTypeId');
var isExist=false;
for(var i=0;i<selectValue.length;i++)
{
if(selectValue[i].text==friendTypeName)
{
alert('该分组名称已经存在');
isExist=true;
return;
}
}
if(isExist==false)
{
systemService.addFriendType(userId,friendTypeName,setResult);//用dwr进行好友类型添加并返回添加产生的id在setResult函数中进行处置
}
}
}
function setResult(data)
{
if(data!=0)
{
alert('添加好友类型成功');
var type= new Array();//将产生的好友类型id和名称添加进数组中并返回到父窗体
type[0]=data;
type[1]=document.getElementById('friendTypeName').value;
window.returnValue=type;
}
else
alert('系统升级中,添加失败');
}
</script>
</head>
<body>
<center>
<br>
<input type="text" name="friendTypeName" value="请输入好友分组名称" id="friendTypeName">
<input class="button" type="button" value="添 加" onclick="addFriendType();">//单击调用添加好友类型的方法
</center>
</body>
注:在这里应该注意几点
1.子窗体中的function setResult(data)函数是dwr自带的data是返回的封装对象,可自己命名,但不可去掉
2.将值返回到父窗体中一定要判断返回类型,因为,无论怎样子窗体都会产生返回值的
3.另见http://ajava.org/course/javascript/14008.html处也讲解了子窗体传值给父窗体 问题
分享到:
相关推荐
Qt主窗口与子窗口之间相互传值,对新手有帮助。
python Qt5GUI界面主窗口和子窗口相互传值,保证能用。。。。。。。。。。。。。!
使用VS2015写的MFC子窗口与父窗口之间消息的传递,可以直接执行
pyqt父子窗口相互传值 pyqt信号槽的使用 对新手可能有帮助
【QT】父组件与子组件的相互通信例子(用signal-slot实现) 目标: 新建一个QMainWindow窗口,在该窗口中添加一个打开按钮,一个spinBox,点击打开按钮后弹出一个对话框,对话框里面有一个slider。改变slider后...
Python3.x+Pyqt5实现主窗体与子窗体相互传数据、传字符、传值;主要使用了信号与槽的方法。
本实例介绍的是如何把值从父窗口和子窗口之间进行相互传递,而且介绍了两种方式都可以实现效果.
使用iframe的时候,可能会涉及到父子窗口之间传值和方法的相互调用,之前一直有些迷糊,也没有着意去弄清楚,这两天要干活,没法子了只好把这都弄明白了。其实非常简单,就那么几个用法,几句代码而已。 子窗口中...
本Demo可以实现WPF页面之间的相互传值,子窗体可以获取父窗体之间的值,父窗体可以获取子窗体内的值,代码每行都有注释,新手容易理解。通俗易懂,欢迎下载优化扩展!
在使用WPF开发的时候就不免会遇到需要两个窗口间进行传值操作,当然多窗口间传值的方法有很多种,本文介绍的是使用委托实现多...实现窗口间的相互传值,先创建两个窗口,先上代码主窗口代码: MainWindow.xaml <G
C#winform多个窗体之间相互传递数据操作。弹出一个新窗体,选中一个数据并传递到父窗体的某个控件上,可以是TextBox也可以是DataGrideView之间相互传递数据,处理并刷新等。
如何传值在2个页面之间 :要求不刷新父页面,并且不能用Querystring传值 Asp.net地址转义(分析)加强版 Web的桌面提醒(Popup) Using the Popup Object Click button only once in asp.net 2.0 Coalesys PanelBar ...
72 <br>0102 将字符串首字母转换大写 72 <br>0103 如何进行字节数组和字符串的相互转换 72 <br>0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 <br>4.2 获取字符串信息 73 ...