【问题标题】:Multiple submit buttons on a form [duplicate]表单上的多个提交按钮[重复]
【发布时间】:2011-12-21 16:32:16
【问题描述】:

可能重复:
Multiple submit buttons in an HTML form

我整理了this form,正如您在页面底部看到的那样,它允许用户添加和删除与主记录关联的图像文件。

我遇到的问题是,有多个按钮背后有一个“提交”操作,即:“上传此文件”、“删除选定图像”、“查看选定图像”和“提交”,因为其中,与我使用的按钮无关,唯一执行的操作是完整的记录提交。

如何确保每个按钮后面的“提交”操作相互独立?

【问题讨论】:

  • 您正在使用每个按钮为某些输入设置值。看起来您总是将表单请求发送到同一个 URL。那么,您到底在担心什么?
  • 把你的表单分成几个不同的表单。
  • 给他们一个name 属性并根据该查询字符串项的存在编写您的PHP代码。
  • @bazmegakapa,非常感谢您的回复。我必须承认对 PHP 比较陌生。我了解如何为每个按钮分配一个名称,但是您能否详细说明我将如何告诉 PHP 查找名称?
  • @IRHM if (isset($_POST['upload_file'])) { your code } 例如,如果您的按钮有 name="upload_file"

标签: php javascript forms


【解决方案1】:

您不需要为每个按钮使用单独的表单。 您可以在提交按钮的“名称”中使用不同的值。然后在服务器上你可以检查'form_action'的值

例子:

<input name="form_action[delete]" type="submit" value="Delete">
<input name="form_action[update]" type="submit" value="Update">

根据需要放置尽可能多的这些按钮。 在服务器上,检查$_POST['form_action'] 的值。

【讨论】:

  • 我会说你不应该检查值(对于多语言网站,它可能会改变等)......例如,只需寻找$_POST['form_action']['delete'] 的存在。
  • form_action 在 PHP 中会变成数组吗?您能否add 参考官方文档来回答您的答案和/或对此进行详细说明? (但没有“编辑:”、“更新:”或类似的 - 答案应该看起来好像是今天写的。)
【解决方案2】:

如果你把每个按钮都放在一个单独的&lt;form&gt;&lt;/form&gt; 中应该没问题。这在您当前的设置中可能是可能的。

假设你不能做到以上几点:

表格:

<form name='myForm'>
    <input type='hidden' id='hiddenSubmit' name='hiddenSubmit' value=''/>

    <!-- Lots of fields here --> 
    <input type='button' name='action1' onclick='changeHiddenSubmit(this.name)'/>

    <!-- Some more fields --> 
    <input type='button' name='action2' onclick='changeHiddenSubmit(this.name)'/>

    // etc...
</form>

JavaScript:

<script>
   function changeHiddenSubmit(name){
       document.getElementById('hiddenSubmit').value = name;
       document.myForm.submit();
    }
</script>

PHP:

<?php
    switch($_POST['hiddenSubmit'){

        case 'action1':

        break;

        case 'action2':

        break;
    }
?>

【讨论】:

  • 您好,非常感谢您抽出宝贵时间回复我的帖子。我不确定是否可以使用单独的表格,请问没有其他方法吗?
  • 一种解决方案可能是将它们更改为常规按钮,然后onClick 将隐藏输入设置为被单击按钮的名称,然后是form.submit()。在 PHP 中检查隐藏字段的值,并采取相应措施。你关注了吗?
  • 感谢您抽出宝贵时间向我发送您的建议。我想我明白你在说什么。我必须仔细看一下才能完全掌握它。亲切的问候
  • 检查我的更新答案,这应该让你开始
  • 我真的不明白他为什么要使用 Javascript。除了在按钮上设置 name 之外,该解决方案还提供了哪些方式(如果 JS 关闭则破坏您的应用程序除外)?
【解决方案3】:

如果你给提交按钮一个唯一的name,你可以在服务器端告诉你点击了哪个按钮(导致提交表单)。

试试这个例子:

<?php
    if (isset($_POST['b1'])) {
        echo 'Button 1 was pressed.';
    }
    if (isset($_POST['b2'])) {
        echo 'Button 2 was pressed.';
    }
    if (isset($_POST['b3'])) {
        echo 'Button 3 was pressed.';
    }
?>
<form action="" method="post">
    <input type="submit" name="b1" />
    <input type="submit" name="b2" />
    <input type="submit" name="b3" />
</form>

【讨论】:

  • 所有,非常感谢您抽出宝贵时间回复我的帖子。我当然收到了一些很棒的建议。常见的主题似乎是为每个按钮添加一个名称,然后在 PHP 中调用该名称,所以这就是我要使用的方法。再次感谢和亲切的regrads。
  • 不能更简单吗?使用the array $_POST['name']?
猜你喜欢
  • 2013-12-12
  • 2015-09-20
  • 2011-04-14
  • 2019-07-27
  • 1970-01-01
  • 2010-12-30
  • 2019-03-19
  • 2017-04-12
  • 1970-01-01
相关资源
最近更新 更多