打开新的弹出窗口并返回值

时间:2012-11-09 03:57:59

标签: javascript html

我正在尝试打开一个新的弹出窗口,将值插入数据库,然后将一个值返回到当前窗口。打开一个新的弹出窗口并单击return后,它返回值,但是当我点击提交并在此之后返回它时,不会返回该值。我认为这是因为新窗口会被提交按钮刷新。这就是为什么它没有返回值。

主页

<form></form>

<form>
<input name="maparea" size="2" type="TEXT">
<input onclick='targetitem = document.forms[1].maparea; dataitem = window.open("popup.php", "dataitem", "toolbar=no,menubar=no,scrollbars=yes"); dataitem.targetitem = targetitem' value="Get Value" type="button">
</form>

Popoup窗口

<script>
   function select_item(item){
      targetitem.value = item;
      top.close();
      return false;
   }
</script>

<form  action="" method="post">
   <input type="submit" name="sub" value="Submit" />
   <input type="button" name="re" value="Return" onclick='return select_item("3")' />
</form>

任何解决方案? 我想在返回值后首先提交我想要的内容

3 个答案:

答案 0 :(得分:2)

在弹出窗口中,勾选提交按钮上的onclick事件,以便在提交之前执行。 然后在onclick处理程序中执行:

window.opener['dataitem'] = <your return value>;

然后在提交后,您的父窗口将具有该值,您可以像这样访问它:

var somevariable = window['dataitem'];

答案 1 :(得分:0)

这个怎么样?

  1. 打开弹出窗口。
  2. 在弹出窗口中:通过AJAX提交表单 (以避免页面刷新)。
  3. 在弹出窗口中:在AJAX调用的成功处理程序中,获取所需的值,使用window.opener将其传回,然后关闭弹出窗口。

答案 2 :(得分:0)

function setColor(color){ if (opener && !opener.closed){ opener.document.theForm.theField.value = color; opener.focus(); } window.close(); } ... <td width="30" bgcolor="#FFFF00" onclick="setColor(this.bgColor)">&nbsp;</td>
Read more at http://www.codingforums.com/showthread.php?t=61319#gkH9pd6gdgvxYqQZ.99