如何使用两个提交按钮,并区分使用哪个提交表单? [复制]

Posted

技术标签:

【中文标题】如何使用两个提交按钮,并区分使用哪个提交表单? [复制]【英文标题】:How do I use two submit buttons, and differentiate between which one was used to submit the form? [duplicate] 【发布时间】:2012-08-09 09:31:50 【问题描述】:

目前,我有一个 html 表单,用户可以在其中输入文章的标题和文本。当提交时,他们会看到两个按钮。一种是“保存”他们的文章而不发布,另一种是“发布”文章并将其公开。

我正在使用 php,我正在尝试弄清楚如何判断使用了哪个按钮,以便在数据库中存储适当的相应值。

<td>
<input type="submit" class="noborder" id="save" value=""  tabindex="4" />
</td>
<td>
<input type="submit" class="noborder" id="publish" value=""  tabindex="5" />
</td>

之前可能应该提到过这一点,但我无法为按钮分配值,因为按钮是一个图像,所以文本会显示在它的上方。

【问题讨论】:

【参考方案1】:

给每个input 一个name 属性。只有被点击的inputname属性会被发送到服务器。

<input type="submit" name="publish" value="Publish">
<input type="submit" name="save" value="Save">

然后

<?php
    if (isset($_POST['publish'])) 
        # Publish-button was clicked
    
    elseif (isset($_POST['save'])) 
        # Save-button was clicked
    
?>

编辑:将 value 属性更改为 alt。不确定这是图像按钮的最佳方法,您不想使用input[type=image] 的任何特殊原因?

编辑:由于这不断获得支持,我继续将奇怪的 alt/value 代码更改为真正的提交输入。我相信最初的问题要求某种图像按钮,但现在有很多更好的方法来实现这一点,而不是使用input[type=image]

【讨论】:

我只是在使用 !empty() 尝试这种方法。既然您提到它,isset() 可能会起作用。编辑:它确实有效。感谢您的建议! 我不记得为什么我选择使用按钮而不是图像,但我相信这是因为我无法将悬停应用于图像提交。 使用多个提交按钮的完美简单解决方案。 无法在 Safari 中使用【参考方案2】:

为这些提交按钮提供名称和值,例如:

    <td>
    <input type="submit" name='mybutton' class="noborder" id="save" value="save"  tabindex="4" />
    </td>
    <td>
    <input type="submit" name='mybutton' class="noborder" id="publish" value="publish"  tabindex="5" />
    </td>

然后在你的 php 脚本中你可以检查

if($_POST['mybutton'] == 'save')

  ///do save processing

elseif($_POST['mybutton'] == 'publish')

  ///do publish processing here

【讨论】:

我不能给按钮值,因为它们是图像。如果我分配值,那么该文本将显示在我的图像顶部。 如果是这种情况,那么您可以拥有 2 个不同名称的不同名称,如 @powerbuoy 所建议的。然后在 php 脚本中检查哪个按钮已提交。 我认为这也行不通,他说他不能将值放在按钮上,因为它们是图像。【参考方案3】:

如果你不能为按钮赋予价值。我只有一个粗略的解决方案。放置一个隐藏字段。并且当在提交之前单击其中一个按钮时,在单击第一个按钮时填充隐藏字段的值,如果单击第二个按钮,则填充 2。并在提交页面中检查此隐藏字段的值以确定点击了哪个。

【讨论】:

【参考方案4】:

你可以如下使用,

<td>

<input type="submit" name="save" class="noborder" id="save" value="Save"  
tabindex="4" />

</td>

<td>

<input type="submit" name="publish" class="noborder" id="publish" value="Publish" 
 tabindex="5" />

</td>

在 PHP 中,

<?php
if($_POST['save'])

   //Save Code

else if($_POST['publish'])

   //Publish Code

?>

【讨论】:

以上是关于如何使用两个提交按钮,并区分使用哪个提交表单? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

确定在 Django 表单提交中单击了哪个提交按钮

jQuery:如何获取表单提交时点击了哪个按钮?

单击属于表单的另一个按钮时如何禁用提交表单

如何在具有 Ajax 的单个表单中使用多个提交按钮 [关闭]

一个提交按钮需要一种形式的输入字段,而其他按钮不需要?

如何使用 Angular JS 处理表单中的多个提交按钮?