【问题标题】: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="" alt="Save" tabindex="4" />
</td>
<td>
<input type="submit" class="noborder" id="publish" value="" alt="Publish" tabindex="5" />
</td>

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

【问题讨论】:

    标签: php forms submit action


    【解决方案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" alt="Save" tabindex="4" />
        </td>
        <td>
        <input type="submit" name='mybutton' class="noborder" id="publish" value="publish" alt="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" alt="Save" 
      tabindex="4" />
      
      </td>
      
      <td>
      
      <input type="submit" name="publish" class="noborder" id="publish" value="Publish" 
      alt="Publish" tabindex="5" />
      
      </td>
      

      在 PHP 中,

      <?php
      if($_POST['save'])
      {
         //Save Code
      }
      else if($_POST['publish'])
      {
         //Publish Code
      }
      ?>
      

      【讨论】:

        猜你喜欢
        • 2015-09-20
        • 2014-10-08
        • 1970-01-01
        • 2021-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多