0

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

主页

<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>

弹出窗口

<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>

有什么解决办法吗?我想先提交我想要的,然后返回值

4

3 回答 3

2

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

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

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

var somevariable = window['dataitem'];
于 2012-11-09T04:21:30.680 回答
1
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 
于 2012-11-09T04:27:32.100 回答
0

这个怎么样?

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