多“操作”的HTML表单

83

我正在设置一个表单,其中需要两个“操作”(两个按钮):

1-“提交此表格以供批准”
2-“保存此申请以便以后使用”

如何创建支持多个“操作”的HTML表单?

例如:

<form class="form-horizontal" action="submit_for_approval.php">
<form class="form-horizontal" action="save_for_later.php">

我需要将这两个提交选项合并到一个表单中。

我进行了一些基本研究,但无法找到明确的答案,是否可以实现此功能以及任何好的资源来解决此问题。


1
我不是 PHP 方面的专家,但在 .NET 中,我可以只向一个表单操作发送请求,并通过查看表单提交数据来确定哪个按钮被点击了。我猜你在 PHP 中也可以这样做。或者,你可以使用 JavaScript 来更改提交的目标。 - AliK
5个回答

86

正如 @AliK 提到的,通过查看提交按钮的值可以轻松实现此操作。

当您提交表单时,未设置的变量将计算为 false。 如果您将两个提交按钮都设置为同一表单的一部分,则可以检查并查看哪个按钮已被设置。

HTML:

<form action="handle_user.php" method="POST" />
  <input type="submit" value="保存" name="save" />
  <input type="submit" value="提交审核" name="approve" />
</form>

PHP

if($_POST["save"]) {
  // 用户点击了保存按钮,相应处理
}
// 你也可以用 else 语句,但我更倾向于使用单独的语句
if($_POST["approve"]) {
  // 用户点击了提交审核按钮,相应处理
}

编辑


如果您不想更改 PHP 设置,请尝试以下方法:http://pastebin.com/j0GUF7MV
这是 @AliK 提到的 JavaScript 方法。

相关链接:


嘿,我现在醒了,你和AliK的JavaScript答案对我来说看起来完美无缺,谢谢! - Samuel Stiles

31

对我而言,最好的方式是采用下一个基础设施:

<form method="POST">
<input type="submit" formaction="default_url_when_press_enter" style="visibility: hidden; display: none;">
<!-- all your inputs -->
<input><input><input>
<!-- all your inputs -->
<button formaction="action1">Action1</button>
<button formaction="action2">Action2</button>
<input type="submit" value="Default Action">
</form>

使用这种结构,您将能够通过回车键发送一个方向,并使用其他按钮的无限可能性。


1

不需要更改后端代码即可实现:

<form class="form-horizontal" action="submit_for_approval.php">
  <button>Submit for Approval</button>
  <button formaction="save_for_later.php">Save for Later</button>
</form>

因为我正在使用Golang,而默认的Go表单解析器将缺少的变量返回为空字符串,所以接受的答案对我无效。因此,您需要将其拆分为单独的端点。


-1

在前端:

   <form action="act1.php" method="post">
   
   <!-- Your HTML Code -->
   
   <button type="submit" name="act" value="action1">Submit</button>
   <button type="submit" name="act" value="action2">Save for Later</button>
   </form>

后端:(act1.php)

<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
  $check = $_POST['act'];
  if($check == "action1") {

    /* Write the code of "submit_for_approval.php" Here or add the following line */
       header("Location: submit_for_approval.php");

  }

  
   if($check == "action2") {

    /* Write the code of "save_for_later.php" Here or add the following line */
       header("Location: save_for_later.php");

  }
}
?>

这是9年前被接受的答案中建议的相同方法;这个答案没有提供任何新东西。 - miken32

-1

这个表单真的很好用,我正在使用thymeleaf制作一个表格,在表格中有两个按钮在一个表单中...谢谢,即使这个线程很旧了,它仍然对我有很大帮助!

<th:block th:each="infos : ${infos}">
<tr>
<form method="POST">
<td><input class="admin" type="text" name="firstName" id="firstName" th:value="${infos.firstName}"/></td>
<td><input class="admin" type="text" name="lastName" id="lastName" th:value="${infos.lastName}"/></td>
<td><input class="admin" type="email" name="email" id="email" th:value="${infos.email}"/></td>
<td><input class="admin" type="text" name="passWord" id="passWord" th:value="${infos.passWord}"/></td>
<td><input class="admin" type="date" name="birthDate" id="birthDate" th:value="${infos.birthDate}"/></td>
<td>
<select class="admin" name="gender" id="gender">
<option><label th:text="${infos.gender}"></label></option>
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</td>
<td><select class="admin" name="status" id="status">
<option><label th:text="${infos.status}"></label></option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
</td>
<td><select class="admin" name="ustatus" id="ustatus">
<option><label th:text="${infos.ustatus}"></label></option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
</td>
<td><select class="admin" name="type" id="type">
<option><label th:text="${infos.type}"></label></option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select></td>
<td><input class="register" id="mobileNumber" type="text" th:value="${infos.mobileNumber}" name="mobileNumber" onkeypress="return isNumberKey(event)" maxlength="11"/></td>
<td><input class="table" type="submit" id="submit" name="submit" value="Upd" Style="color: white; background-color:navy; border-color: black;" th:formaction="@{/updates}"/></td>
<td><input class="table" type="submit" id="submit" name="submit" value="Del" Style="color: white; background-color:navy; border-color: black;" th:formaction="@{/delete}"/></td>
</form>
</tr>
</th:block>


这是9年前被接受的答案中建议的相同方法;这个答案没有提供任何新东西。 - miken32

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接