我在一个表单中有两个提交按钮。我如何确定哪一个击中了服务器端?
当前回答
<form>
<input type="submit" value="Submit to a" formaction="/submit/a">
<input type="submit" value="submit to b" formaction="/submit/b">
</form>
其他回答
解决方案1: 给每个输入一个不同的值,并保持相同的名称:
<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />
然后在代码中检查哪些被触发:
if ($_POST['action'] == 'Update') {
//action for update here
} else if ($_POST['action'] == 'Delete') {
//action for delete
} else {
//invalid action!
}
这样做的问题是,您将逻辑绑定到输入中的用户可见文本。
解决方案2: 给每个对象一个唯一的名称,并检查$_POST是否存在输入:
<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />
在代码中:
if (isset($_POST['update_button'])) {
//update action
} else if (isset($_POST['delete_button'])) {
//delete action
} else {
//no button pressed
}
您还可以使用href属性并为每个按钮发送带有附加值的get。但那时就不需要填表格了
href="/SubmitForm?action=delete"
href="/SubmitForm?action=save"
一个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>
使用相同的表单添加新用户和登录用户。
您可以在一个表单中设置多个提交按钮 例子:
<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">
如果你给每一个名称,点击的将作为任何其他输入发送。
<input type="submit" name="button_1" value="Click me">