【问题标题】:Javascript form submit to popup window with targetJavascript表单提交到带有目标的弹出窗口
【发布时间】:2014-09-23 08:47:23
【问题描述】:

我想将表单提交到弹出窗口(非空白)。这工作正常,但由于某种原因,我的父窗口第二次打开。

 var formelements = document.getElementById("exportform");
 formelements.removeAttribute("action");
 formelements.setAttribute("target","/path/exportwindow.html");
 exportwindow = window.open("/path/exportwindow.html", "myexportwindow", "width=800,height=600,resizable=yes");                                         

 formelements.submit();

HTML:

<form id="exportform" action="/path/myfunction" method="post">

所以会发生什么是弹出窗口打开并且在后台我的父窗口打开到一个新选项卡。谁能告诉我为什么 js 会这样?

【问题讨论】:

标签: javascript html popup window form-submit


【解决方案1】:

window.open中的第二个参数是窗口名,必须和target一致

 var formelements = document.getElementById("exportform");
 formelements.setAttribute("action","path/to/exportwindow.php");
 formelements.setAttribute("target","bugsme");
 exportwindow = window.open("", "bugsme", "width=800,height=600,resizable=yes");

 formelements.submit();

这会打开一个弹出窗口,但您可能不应该删除操作参数,而是将其设置为接收表单数据的正确脚本

【讨论】:

  • 是的,就像这样它提交到一个新窗口,这个看起来和父窗口一样,但我希望它提交到一个新窗口,里面有一个新的html,什么是exportwindow.html。有没有办法做到这一点?
  • @user3891252 将操作参数设置为正确的脚本(接收表单数据的脚本)。 html 也可以执行“/path/exportwindow.html”,即使这是不寻常的(内部没有任何内容的表单)
  • @FrancescoMM,非常有用,可以节省我的时间。非常感谢你。还有一个问题,为什么不能去掉setAttribute方法中的action参数?比如 exportwindow = window.open("path/to/exportwindow.php", "bugsme", "width=800,height=600,resizable=yes");
  • @T8Z 如果你这样做,它将打开一个弹出窗口调用 exportwindow.php 没有参数(没有表单数据),然后提交发送数据到 HTML(或当前脚本)中定义的操作.具有正确目标(=窗口)和操作(=脚本)参数的提交将正确地将所有表单数据传递给正确的脚本,并在正确的窗口中显示结果。如果要删除操作和目标参数,则必须将它们放在 HTML 中的 FORM 标记中,而不是 window.open 调用中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 2012-01-26
  • 2011-10-16
相关资源
最近更新 更多