在表单中有一个提交按钮(在多个按钮之外)打开一个新选项卡

时间:2015-07-31 15:40:12

标签: php html forms

我有一个提交按钮的表单和一个用于在提交前预览PDF的按钮。我希望预览PDF按钮将表单数据传递给新页面(显然会生成PDF),但提交按钮可以在当前页面上工作。

我一直在四处寻找,但大多数答案都指向在表单标记中使用target="_blank",尽管在我的情况下这不会起作用,因为这会打开标签中的每个按钮。其他一些人展示了如何在javascript中打开一个窗口,但没有任何表单数据,除非它是通过URL传递的。

我只知道PHP和HTML,所以我可以通过提交到同一页面,替换框中的文本,并在此过程中打开一个新窗口来实现它,但它有点过于复杂只是为了一个新标签,加上我需要将所有内容设置为会话变量或通过URL传递内容。

2 个答案:

答案 0 :(得分:3)

由于似乎没有任何明显简单的方法来做这么简单的事情,我对这个问题进行了重点改写并最终找到了一些东西。事实证明,我完全错过了一种非常简单的方式。

在尝试了mplugjan的回答之后,我意识到唯一简单的方法就是为每个按钮分别设置两个表单(除非我做了akshay的建议,但这是最后的手段),但我和# 39; d某种程度上需要从主表单中获取值,据我所知,从单独的表单中这是不可能的。然后我想我实际上只需要按钮来执行不同的操作,幸运的是确实得出了结果。可以通过formactionformtarget来完成。

如果有其他人遇到此问题,该怎么做的简短示例:

<form action = "page.php">
    <input type="submit" value="Accept"/>
    <input type="submit" value="Preview PDF" formaction="pdf.php" formtarget="_blank"/>
</form>

答案 1 :(得分:0)

喜欢这个吗?

&#13;
&#13;
window.onload = function() {
  document.getElementById("preview").onclick = function() {
    document.getElementById("previewIFrame").src = "showpdf.php?id=" + document.getElementById("pdfID").value;
    document.getElementById("previewDiv").style.display = "block";
  }
  document.getElementById("close").onclick = function() {
    document.getElementById("previewDiv").style.display = "none";
  }
}
&#13;
#previewDiv {
  display: none;
}
&#13;
<form>
  <input type="hidden" value="<?php echo $pdfId; ?>" id="pdfID" />
  <input type="button" value="preview" id="preview" />
</form>
<div id="previewDiv"><span id="close">Close</span>
  <br>
  <iframe src="" id="previewIFrame"></iframe>
</div>
&#13;
&#13;
&#13;

或者只是

<form action="send.php">
  <input name="pdfID" type="hidden" value="<?php echo $pdfId; ?>"/>
  <input type="submit">
</form>
<form action="preview.php" target="iframe1">
  <input name="pdfID" type="hidden" value="<?php echo $pdfId; ?>"/>
  <input type="submit">
</form>
<iframe name="iframe1"</iframe>