`
535471267
  • 浏览: 13953 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

子窗口和父窗口进行相互传值

阅读更多
最近做了一个小小的聊天室的项目,在添加好友的时候用到了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="添&nbsp;&nbsp;加" onclick="addFriendType();">//单击调用添加好友类型的方法
</center>
  </body>


注:在这里应该注意几点
1.子窗体中的function setResult(data)函数是dwr自带的data是返回的封装对象,可自己命名,但不可去掉

2.将值返回到父窗体中一定要判断返回类型,因为,无论怎样子窗体都会产生返回值的

3.另见http://ajava.org/course/javascript/14008.html处也讲解了子窗体传值给父窗体 问题
分享到:
评论

相关推荐

    QT父子窗口相互传值

    "QT父子窗口相互传值"这个主题,主要涉及Qt框架中如何有效地实现这种通信机制。本篇文章将详细探讨Qt窗口之间传递数据的方法和技巧,对初学者来说尤其具有指导意义。 首先,让我们理解Qt中的窗口对象关系。在Qt中,...

    MFC子窗口与父窗口之间消息的传递

    父窗口和子窗口可能需要在创建时初始化一些状态,这可以通过重载OnCreate()和OnInitDialog()函数完成。OnCreate()用于非对话框窗口,OnInitDialog()用于对话框窗口。 10. **消息泵(Message Loop)** Windows应用...

    pyqt父子窗口相互传值

    "pyqt父子窗口相互传值"这个主题就是关于如何在不同的QMainWindow或QWidget实例之间传递数据。下面将详细讲解这个过程,并提供一个可能的实现方式。 首先,我们需要理解PyQt中的窗口层次结构。在PyQt5中,窗口通常...

    python Qt5GUI界面主窗口和子窗口相互传值,保证能用

    通过以上方法,我们可以轻松地在Python Qt5 GUI中实现主窗口和子窗口之间的数据传递。理解并熟练运用这些技巧,将有助于构建更加交互性和功能丰富的应用程序。在实际开发中,应根据需求选择合适的方式,并注意保持...

    js操作模态窗口及父子窗口间相互传值示例

    父子窗口间的相互传值是Web开发中经常遇到的一个需求,尤其当模态窗口被用作子窗口时。本文将详细介绍如何使用JavaScript来操作模态窗口,并实现父子窗口之间的数据传递。 首先,我们要了解什么是模态窗口以及如何...

    主窗体给两个父窗体传值,子窗体和子窗体间传值,Action搞定,比较简单的demo

    在Windows应用程序开发中,尤其是使用.NET Framework的C#或Visual Basic .NET时,窗口之间的数据传递是一个常见的需求。本文将详细讲解如何通过...以上就是关于窗体间相互传值的基本概念和实现方法,希望对你有所帮助。

    javascript 子窗体父窗体相互传值方法

    当通过JavaScript的window.open函数打开一个新的浏览器窗口时,这个新窗口被称为子窗体(子窗口),而打开这个新窗口的页面则被称为父窗体(父窗口)。在父窗体和子窗体之间传递数据可以通过多种方式实现,下面介绍...

    JS父页面与子页面相互传值方法

    需要注意的是,由于同源策略的限制,只有当父页面和子页面位于同一域下,才能直接通过JS进行通信。如果跨域,需要借助其他技术如CORS、JSONP或WebSocket等来实现数据传递。此外,出于安全考虑,现代浏览器可能限制...

    页面中iframe相互传值传参

    首先,要在不同浏览器中实现iframe的相互传值传参,我们可以通过全局对象window来引用父窗口和子窗口。在iframe中,可以通过window.parent获取到父窗口的对象,而在父窗口中,则可以通过window.frames数组来访问特定...

    ie+FF通用的父子模态对话框相互传值

    总的来说,实现"ie+FF通用的父子模态对话框相互传值"涉及到JavaScript的事件处理、跨窗口通信和CSS的模态设计。理解这些知识点并熟练运用,能帮助开发者创建出更好的交互体验。同时,要时刻关注浏览器的兼容性和最佳...

    【QT】父组件与子组件的相互通信例子(用signal-slot实现)

    【QT】父组件与子组件的相互通信例子(用signal-slot实现) 目标: 新建一个QMainWindow窗口,在该窗口中添加一个打开按钮,一个spinBox,点击打开按钮后弹出一个对话框,对话框里面有一个slider。改变slider后...

    Python3.x+Pyqt5实现主窗体与子窗体相互传数据、传字符、传值;主要使用了信号与槽的方法

    Python3.x+Pyqt5实现主窗体与子窗体相互传数据、传字符、传值;主要使用了信号与槽的方法。

    iframe父子传值

    本文将详细介绍如何在`iframe`的父窗体与子窗体之间进行数据传递。 ### 1. 同源策略与跨域限制 首先,我们需要了解浏览器的安全机制——同源策略。同源策略规定,只有相同协议、域名和端口的两个页面才能相互访问...

    iframe的父子窗口之间的对象相互调用基本用法

    使用iframe的时候,可能会涉及到父子窗口之间传值和方法的相互调用,之前一直有些迷糊,也没有着意去弄清楚,这两天要干活,没法子了只好把这都弄明白了。其实非常简单,就那么几个用法,几句代码而已。 子窗口中...

    C# WPF 通过委托实现多窗口间的传值的方法

    在使用WPF开发的时候就不免会遇到需要两个窗口间进行传值操作,当然多窗口间传值的方法有很多种,本文介绍的是使用委托实现多...实现窗口间的相互传值,先创建两个窗口,先上代码主窗口代码: MainWindow.xaml &lt;G

    delphi不同窗体的变量传递

    但是,这种方法需要注意的是,全局变量可能导致数据竞争和同步问题,而公共类则需要妥善管理实例化和销毁过程。 2. **使用属性和方法**:每个窗体都是一个对象,可以拥有属性和方法。当需要传递数据时,可以在一个...

    C#_winform_多个窗体之间相互传递数据操作

    在C# WinForm应用开发中,经常需要在多个窗体之间进行数据交互,以便实现信息的传递和更新。本文将详细讲解如何在不同窗体之间有效地传递数据,并提供实际操作的示例。 首先,理解窗体(Form)是WinForm应用程序的...

Global site tag (gtag.js) - Google Analytics