如果HTML表单有两个<input type =“submit”/>按钮,我怎么知道哪个被点击了?

时间:2010-01-24 23:19:14

标签: html forms submit

假设我有以下HTML表单:

<form>
...
<input type="submit" name="queue" value="Queue item">
<input type="submit" name="submit" value="Submit item">
</form>

如何知道用户点击了哪个按钮(不使用javascript)?

我查看了提交的数据,似乎在点击"Queue Item"时,"queue" = "Queue Item"会被发送到服务器。点击"Submit item"后,"submit" = "Submit item"设置已发送。

我可以依赖这种行为吗?它是否在HTML表单的标准中的某处记录?你们是怎么做到的?

4 个答案:

答案 0 :(得分:54)

是的,你可以依靠这个;它已完整记录here。具体相关部分说:

  

当提交表单进行处理时,某些控件的名称与其当前值配对,并且这些对与表单一起提交。提交名称/值对的控件称为成功控件。

  

如果表单包含多个提交按钮,则只有激活的提交按钮成功。

答案 1 :(得分:5)

是的,你可以依靠这种行为。

单击<input type="submit" name="queue" value="Queue item">时,将设置“队列”字段,并且不会“提交”。

当点击其他对象时,将设置“提交”字段,并且不会设置“队列”。

如果你不确定这一点,可以将它们分成2个表格并按照这种方式进行处理。

答案 2 :(得分:3)

您可以依赖此行为。您获得输入的值。我会使用javascript切换隐藏的表单值,但由于您没有提及javascript,因此您没有多个选择。

这是一个标准。由于它是input标记,并且有value,这意味着您已提交value

答案 3 :(得分:0)

将表单拆分为两种形式,复制其他操作所需的任何其他输入。或者,如果您真的只需要知道用户是否想要“排队并提交”该项目,请将两个提交按钮更改为无线电选择以在两个选项之间切换,并使用新的单独的“提交表单”按钮。

在这种情况下,如果您需要单击选项,则可以使用Javascript检测何时选择了其中一个单选按钮,并立即自动提交表单。 (使用Javascript进行用户界面,而不是表单处理)