浅论popup

1.需求:采用模式子窗体,从主页面打开popup页面,在popup页面的列表里选择code和name传递回主页面。由于主页面以后会有很多项目需要从此popup页面选择值,因此需要在打开popup页面的时候告诉他主页面的哪个项目需要他的返回值。在主页面上,code是text,name是lable。

2.关键问题:showModalDialog(a,b,c)是js打开模式子窗体的命令,其中a是子窗体页面及路径,省略路径时默认在相同目录下;b是参数数组,通常只传递当前画面的window;c是子窗体的样式。在这里由于我要向popup页面传递主页面需要赋值的项目名称,因此我需要通过b来实现这个目的,在子窗体中通过window.dialogArguments来得到主页面传进来的参数。在popup页面中,由于是模式子窗体因此需要注意几个问题,首先,如果popup页面上的数据列表需要通过超链接来返回选择的值,那么它需要这个形式<A href="" οnclick="popupUpdate('2222', '名称2');"> ,注意在href不可以写js,只能通过单击事件来执行js;其次,在关闭popup页面时,容易出现关闭窗口的同时弹出另一个空白窗体的问题,那需要在body标签前面加上<base target=_self>,这样就可以解决这个问题。另外主页面上的lable用SPAN来实现,改变lable的值,事实上就是重写SPAN标签内的内容,document.name.innerHTML = "name"。

3.代码:

 主页面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
 <script type="text/javascript">
  function openPopup(code, name){
   var dialog = showModalDialog("popup.html", new Array(window, code, name), "dialogWidth:600px;dialogHeight:400px;status:no;help:no;resizable=no;edge:Sunken");
  }
 </script>
</HEAD>

<BODY>
<FORM METHOD=POST ACTION="">
<TABLE>
<TR>
 <TD>
  <A href="javascript:openPopup('cd1', 'nm1');">popup1</A>
  <INPUT TYPE="text" NAME="cd1">
  <SPAN ID="nm1"></SPAN>
 </TD>
</TR>
<TR>
 <TD>
  <A href="javascript:openPopup('cd2', 'nm2');">popup2</A>
  <INPUT TYPE="text" NAME="cd2">
  <SPAN ID="nm2"></SPAN>
 </TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>

popup页面

<html>

<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>popup</title>
  <script type="text/javascript">
  var args = window.dialogArguments;
  var win = args[0];
  var targetCode = args[1];
  var targetName = args[2];

  function popupUpdate(code, name){
   win.document.all[targetCode].value = code;
   win.document.all[targetName].innerHTML = name;
   self.window.close( );
  }
 </script>
</head>
<base target=_self>
<body >

<div id="main">   

  <table border="1" width="50%" align="center">
    <tr>
      <td width="10%">コード</td>
      <td  width="29%">名称</td>
    </tr>
    <tr>
      <td  width="10%"><A href="" οnclick="popupUpdate('1111', '名称1');">1111</A></td>
      <td  width="29%">名称1
      </td>
    </tr>
    <tr>
      <td width="10%"><A href="" οnclick="popupUpdate('2222', '名称2');">2222</A></td>
      <td  width="29%">名称2 </td>
    </tr>
    <tr>
      <td width="10%"><A href="" οnclick="popupUpdate('3333', '名称3');">3333</A></td>
      <td width="29%">名称3 </td>
    </tr>
    <tr>
      <td  width="10%"><A href="" οnclick="popupUpdate('4444', '名称4');">4444</A></td>
      <td  width="29%">名称4 </td>
    </tr>
    <tr>
      <td  width="10%"><A href="" οnclick="popupUpdate('5555', '名称5');">5555</A></td>
      <td  width="29%">名称5 </td>
    </tr>
    <tr>
      <td width="10%">&nbsp;</td>
      <td width="29%">&nbsp;</td>
    </tr>
    <tr>
      <td  width="10%">&nbsp;</td>
      <td  width="29%">&nbsp;</td>
    </tr>
    <tr>
      <td width="10%">&nbsp;</td>
      <td  width="29%">&nbsp;</td>
    </tr>

  </table>

</div>

</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值