为具有多个提交按钮的表单设置不同的目标
Set different targets for form with multiple submit buttons
我有一个包含所见即所得编辑器和两个提交按钮的表单:
<input type='submit' name='pdf' value='PDF Preview'/>
<input type='submit' name='save' value='Save'/>
"pdf" 操作将编辑器的内容显示为 PDF 输出。 "save" 操作是常规表单提交。我希望 PDF 输出在新选项卡中打开,但不知道该怎么做。
"input" 标签没有 "target" 属性。我可以将 "target=_blank" 添加到 "form" 标签,但这也会在新选项卡中提交我的 "save" 操作,这是我不想要的。
我尝试用这个替换 "pdf" 提交按钮:
<a href="same_page" target="_blank" onclick="submitForm();">
那没用。表单在其当前选项卡中提交,新选项卡查询在 $_POST 中未收到任何内容。
有什么我还不知道的魔术吗?
注意:服务器端代码是PHP
将按钮和 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>
您可以尝试使用 jQuery 来完成此操作。
例如,当单击 PDFPreview 按钮时 jQuery 可以将表单输入的值保存到 cookie 中。然后它将重定向到新选项卡中的 PDFPreview 页面。然后 PDFPreview 页面将读取 cookie。
例如:
<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>
简而言之,你有一个表单 + 两个提交按钮
第一个按钮:在同一选项卡中打开
第二个按钮:在新标签页中打开
提交后你想知道提交的是哪一个
解法:
添加两个行为不同的提交按钮是不可能的
所以你需要 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>
您可以使用 input
标记的 HTML5 formtarget
属性来更改表单行为。但是,这不适用于过时的浏览器。在您的情况下,它看起来像:
<input type='submit' name='pdf' formtarget="_blank" value='PDF Preview'/>
<input type='submit' name='save' formtarget="_self" value='Save'/>
它也可以与 button
标签一起使用。
参考文献:
我有一个包含所见即所得编辑器和两个提交按钮的表单:
<input type='submit' name='pdf' value='PDF Preview'/>
<input type='submit' name='save' value='Save'/>
"pdf" 操作将编辑器的内容显示为 PDF 输出。 "save" 操作是常规表单提交。我希望 PDF 输出在新选项卡中打开,但不知道该怎么做。
"input" 标签没有 "target" 属性。我可以将 "target=_blank" 添加到 "form" 标签,但这也会在新选项卡中提交我的 "save" 操作,这是我不想要的。
我尝试用这个替换 "pdf" 提交按钮:
<a href="same_page" target="_blank" onclick="submitForm();">
那没用。表单在其当前选项卡中提交,新选项卡查询在 $_POST 中未收到任何内容。
有什么我还不知道的魔术吗?
注意:服务器端代码是PHP
将按钮和 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>
您可以尝试使用 jQuery 来完成此操作。 例如,当单击 PDFPreview 按钮时 jQuery 可以将表单输入的值保存到 cookie 中。然后它将重定向到新选项卡中的 PDFPreview 页面。然后 PDFPreview 页面将读取 cookie。 例如:
<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>
简而言之,你有一个表单 + 两个提交按钮
第一个按钮:在同一选项卡中打开
第二个按钮:在新标签页中打开
提交后你想知道提交的是哪一个
解法:
添加两个行为不同的提交按钮是不可能的 所以你需要 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>
您可以使用 input
标记的 HTML5 formtarget
属性来更改表单行为。但是,这不适用于过时的浏览器。在您的情况下,它看起来像:
<input type='submit' name='pdf' formtarget="_blank" value='PDF Preview'/>
<input type='submit' name='save' formtarget="_self" value='Save'/>
它也可以与 button
标签一起使用。
参考文献: