我在一个表单中有两个提交按钮。我如何确定哪一个击中了服务器端?


当前回答

使用formaction HTML属性(第5行):

<form action="/action_page.php" method="get">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br>
    <button type="submit">Submit</button><br>
    <button type="submit" formaction="/action_page2.php">Submit to another page</button>
</form>

其他回答

这非常容易测试:

<form action="" method="get">
    <input type="submit" name="sb" value="One">
    <input type="submit" name="sb" value="Two">
    <input type="submit" name="sb" value="Three">
</form>

只需将其放入HTML页面,单击按钮,然后查看URL。

需要注意的是,如果您有多个提交按钮,并且您按了return (ENTER键),那么键盘上的默认按钮值将是DOM上的第一个按钮。

例子:

<form>
  <input type="text" name="foo" value="bar">
  <button type="submit" name="operation" value="val-1">Operation #1</button>
  <button type="submit" name="operation" value="val-2">Operation #2</button>
</form>

如果你在这个表单上按ENTER键,将发送以下参数:

foo=bar&operation=val-1
<form>
    <input type="submit" value="Submit to a" formaction="/submit/a">
    <input type="submit" value="submit to b" formaction="/submit/b">    
</form>

一个HTML示例,在不同的按钮点击发送不同的表单动作:

<form action="/login" method="POST">
    <input type="text" name="username" value="your_username" />
    <input type="password" name="password" value="your_password" />
    <button type="submit">Login</button>
    <button type="submit" formaction="/users" formmethod="POST">Add User</button>
</form>

使用相同的表单添加新用户和登录用户。

你也可以这样做(我认为如果你有N个输入,这很方便)。

<input type="submit" name="row[456]" value="something">
<input type="submit" name="row[123]" value="something">
<input type="submit" name="row[789]" value="something">

一个常见的用例是为每个按钮使用来自数据库的不同id,这样稍后您就可以知道在服务器中单击了哪一行。

在服务器端(本例为PHP),您可以将“row”读取为数组以获取id。

$_POST['row']将是一个只有一个元素的数组,形式为[id => value](例如:[' 123' => 'something'])。

所以,为了得到点击的id,你做:

$index = key($_POST['row']);

key