表单上的多个提交按钮

Multiple submit buttons on a form

本文关键字:提交 按钮 表单      更新时间:2023-09-26

可能的重复项:
HTML 表单中的多个提交按钮

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

我遇到的问题是有多个按钮后面有一个"提交">

操作,即:"上传此文件"、"删除所选图像"、"查看所选图像"和"提交",因此,我使用的按钮无关紧要,唯一执行的操作是完整的记录提交。

如何确保每个按钮背后的"提交"操作彼此独立工作?

不需要

为每个按钮使用单独的窗体。您可以在提交按钮的"名称"中使用不同的值。然后在服务器上,您可以检查"form_action"的值

例:

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

根据需要放置任意数量的这些按钮。在服务器上,检查 $_POST['form_action'] 的值。

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

假设您不能执行上述操作:

形式:

<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;
    }
?>

如果你给你的提交按钮一个唯一的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>