使用多个提交按钮为表单设置不同的目标

时间:2016-06-28 10:06:00

标签: php html forms submit

我有一个包含WYSIWYG编辑器和两个提交按钮的表单:

<input type='submit' name='pdf' value='PDF Preview'/>
<input type='submit' name='save' value='Save'/>

&#34; PDF&#34; action将编辑器的内容显示为PDF输出。 &#34;保存&#34; action是常规表单提交。我希望PDF输出在新标签中打开,并且无法确定如何执行此操作。

没有&#34;目标&#34;属性为&#34;输入&#34;标签。我可以添加&#34; target = _blank&#34;到&#34;形式&#34;标签,但那将提交我的&#34;保存&#34;在新标签中的操作也是我不想要的。

我试图替换&#34; pdf&#34;提交按钮:

<a href="same_page" target="_blank" onclick="submitForm();">

那不起作用。表单在其当前选项卡中提交,新选项卡查询在$ _POST中不会收到任何内容。

还有一个我不知道的魔术吗?

注意:服务器端代码是PHP

4 个答案:

答案 0 :(得分:2)

使用按钮和onclick事件与jQuery。

<button type='submit' name='pdf' onclick="$('form').attr('target', '_blank');">PDF Preview</button>
<button type='submit' name='save' onclick="$('form').attr('target', '');">SAVE</button>

答案 1 :(得分:1)

简而言之,您有一个表单+两个提交按钮

第一个按钮:在同一个标​​签页中打开

第二个按钮:在新标签页中打开

提交后,您想知道提交了哪一个

<强>解决方案:

添加两个具有不同行为的提交按钮是不可能的 所以你需要JS帮助或Jquery( Ravi Hirani 解决方案是完美的)

要知道提交了哪个按钮,您应该提供不同的名称( newage 评论是完美的)

所以这只是一个简单的例子,你正在寻找的魔力:

<?php
//print the post data
var_dump($_POST);
?>


<script type="application/javascript" src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
<form action="test.php" method="POST">
    <!-- just simple textarea -->
    <textarea rows="4" cols="50" name="textarea">
        text here
    </textarea>

    <!-- new tab submit button -->
    <input type="submit" name="New_Window" value="New Window" onclick="$('form').attr('target', '_blank');" />
    <!-- same tab submit button -->
    <input type="submit" name="Same_Window" value="Same Window" onclick="$('form').attr('target', '');" />

</form>

答案 2 :(得分:0)

您可以尝试使用jQuery。 例如,当单击PDFPreview按钮时,jQuery可以将表单输入的值保存到cookie中。然后它将在新选项卡中重定向到PDFPreview页面。然后,PDFPreview页面将读取cookie。 E.g:

<script>
var input1 = null;
function previewPdf()
{
  input1 = $("#input1").text();
  document.cookie = "input1=" + input1;
  window.open("/path/to/pdfPreview.php", '_blank')
}
</script>
<form action="whateverpage" method="post">
<input type="text" name="input1" id="input1">
<input type="button" onClick="previewPdf();" value="Preview PDF">
<input type="submit" value="Save">
</form>

答案 3 :(得分:-1)

您可以使用formtarget标签的HTML5 input属性来更改表单行为。但是,这不适用于过时的浏览器。在您的情况下,它将类似于:

<input type='submit' name='pdf' formtarget="_blank" value='PDF Preview'/>
<input type='submit' name='save' formtarget="_self" value='Save'/>

它也可以与button标签一起使用。

参考文献: