我有一个提交按钮的表单和一个用于在提交前预览PDF的按钮。我希望预览PDF按钮将表单数据传递给新页面(显然会生成PDF),但提交按钮可以在当前页面上工作。
我一直在四处寻找,但大多数答案都指向在表单标记中使用target="_blank"
,尽管在我的情况下这不会起作用,因为这会打开标签中的每个按钮。其他一些人展示了如何在javascript中打开一个窗口,但没有任何表单数据,除非它是通过URL传递的。
我只知道PHP和HTML,所以我可以通过提交到同一页面,替换框中的文本,并在此过程中打开一个新窗口来实现它,但它有点过于复杂只是为了一个新标签,加上我需要将所有内容设置为会话变量或通过URL传递内容。
答案 0 :(得分:3)
由于似乎没有任何明显简单的方法来做这么简单的事情,我对这个问题进行了重点改写并最终找到了一些东西。事实证明,我完全错过了一种非常简单的方式。
在尝试了mplugjan的回答之后,我意识到唯一简单的方法就是为每个按钮分别设置两个表单(除非我做了akshay的建议,但这是最后的手段),但我和# 39; d某种程度上需要从主表单中获取值,据我所知,从单独的表单中这是不可能的。然后我想我实际上只需要按钮来执行不同的操作,幸运的是确实得出了结果。可以通过formaction
和formtarget
来完成。
如果有其他人遇到此问题,该怎么做的简短示例:
<form action = "page.php">
<input type="submit" value="Accept"/>
<input type="submit" value="Preview PDF" formaction="pdf.php" formtarget="_blank"/>
</form>
答案 1 :(得分:0)
喜欢这个吗?
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;
或者只是
<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>