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


当前回答

你也可以这样做(我认为如果你有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

其他回答

如果你给每一个名称,点击的将作为任何其他输入发送。

<input type="submit" name="button_1" value="Click me">

将name定义为数组。

<form action='' method=POST>
    (...) some input fields (...)
    <input type=submit name=submit[save] value=Save>
    <input type=submit name=submit[delete] value=Delete>
</form>

服务器代码示例(PHP):

if (isset($_POST["submit"])) {
    $sub = $_POST["submit"];

    if (isset($sub["save"])) {
        // Save something;
    } elseif (isset($sub["delete"])) {
        // Delete something
    }
}

Elseif非常重要,因为两者都将被解析。

您可以在一个表单中设置多个提交按钮 例子:

 <input type="submit" name="" class="btn action_bg btn-sm loadGif" value="Add Address" title="" formaction="/addAddress"> 
 <input type="submit" name="" class="btn action_bg btn-sm loadGif" value="update Address" title="" formaction="/updateAddress"> 

我认为您应该能够读取GET数组中的名称/值。我认为没有点击的按钮不会出现在列表中。

<form method="post">
    <input type="hidden" name="id" value="'.$id.'" readonly="readonly"/>'; // Any value to post PHP
    <input type='submit' name='update' value='update' formAction='updateCars.php'/>
    <input type='submit' name='delete' value='delete' formAction='sqlDelete.php'/>
</form>