【问题标题】:One form two submit buttons一个表单两个提交按钮
【发布时间】:2012-07-27 20:53:08
【问题描述】:

我在一个网站上有两个相似的表单,我想将它们合并为一个带有两个提交按钮的表单。他们使用大部分相同的数据。

第一种形式使用 GET 将数据发送到另一台服务器。第二种形式通过电子邮件发送。我强烈建议网站用户在尝试选项二之前使用选项一。

我知道如何使用 javascript 来做到这一点,但不是以一种可以很好地降级的方式。还有其他方法可以有两个提交选项吗?或如何实现这一点的其他想法?谢谢!

【问题讨论】:

  • 您实际上可以使用两个具有不同名称或值的提交按钮,并根据与您定义的按钮匹配的 $_POST 变量检查您想要执行的操作。
  • 为什么不只有一个提交按钮和几个单选按钮供用户选择?然后在服务器端处理它。两个提交按钮可能会让您的访问者感到困惑。
  • 很多人建议在表单中使用下拉菜单/收音机,所以我想我应该提供更多细节。该表格适用于图书馆。第一个表格查看图书馆是否有项目,第二个表格向图书馆员发送电子邮件并要求她订购。人们一直在跳过第一种形式,这就是我想合并它们的原因。我的计划是将第一个提交按钮设置为“请在提交请求之前检查此处”之类的样式。我认为 Nikola 的解决方案应该可以解决这个问题?

标签: php forms


【解决方案1】:

Snow Blind 提供了很好的解决方案,但您无法确定点击了哪个按钮。
按钮的名称必须不同,不能相同。

示例:

<input type="submit" name="server" value="Server" />
<input type="submit" name="email" value="Email" />

<?php

if(isset($_GET['server']))
{
    // Send to another server
}
else if(isset($_GET['email']))
{
    // Send to email
}
else die("None of buttons was clicked.");

?>

此外,如果您在两个部分(服务器和电子邮件)中具有相同的代码,您可以执行以下操作:

if(isset($_GET['server']) || isset($_GET['email']))
{
    // Do something common to both methods
    if(isset($_GET['server'])) 
    {
        // Send to server
    }
    else 
    {
        // Send to email
    }
}




在我看来,更好的解决方案是只放置 1 个提交按钮 + 一个带有选择方法的下拉菜单。

<select name="sendMethod">
    <option value="" disabled>Choose sending method...</option>
    <option value="server">Send to another server</option>
    <option value="email">Send to e-mail</option>
</select>

【讨论】:

    【解决方案2】:

    就像大家说的那样,使用复选框/单选按钮。 并将使用 GET 的设置为默认选项

    如果您不想使用 javascript,您可以随时获取复选框/收音机的值并检查用户选择

    【讨论】:

      【解决方案3】:

      您可以创建两个提交按钮,并赋予它们相同的name 但不同的value

      <input type="submit" name="submit" value="Server">
      <input type="submit" name="submit" value="Email">
      

      然后您可以检查$_GET['submit']$_POST['submit'](取决于form method)以查看使用了哪个提交。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-29
        • 1970-01-01
        • 1970-01-01
        • 2010-10-07
        • 2016-01-18
        • 2017-01-05
        相关资源
        最近更新 更多