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

假设我有以下的HTML表单:

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

我怎么知道用户点击了哪个button(不使用javascript)?

我查看提交的数据,似乎当"Queue Item"被点击时, "queue" = "Queue Item"被发送到服务器。 当"Submit item"被点击,然后"submit" = "Submit item"集发送。

我可以依靠这种行为吗? 它是否在HTML表单的标准中有记载? 你们怎么做?

是的,你可以依靠这个; 这里有完整的文档。 具体相关的行说:

当一个表单被提交处理时,一些控件的名字与他们的当前值配对,并且这些对被提交表单。 那些提交了名称/值对的控件称为成功控件。

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

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

<input type="submit" name="queue" value="Queue item">被点击时,字段“queue”将被设置,“submit”不会被提交。

而另一个被点击的时候,字段“提交”将被设置,而“队列”将不会被设置。

如果你不能保证这一点,你可以把它们分成两种forms,然后这样做。

你可以依靠这种行为。 你得到了input的价值。 我会使用javascript来切换隐藏的表单值,但由于您提到没有javascript你没有多个select。

这是一个标准。 由于它是一个input标签,并有一个value ,这意味着你得到提交的value

将表单拆分为两种forms,复制其他动作所需的任何其他input。 或者,如果您真的需要知道用户是否想“排队还是提交”这个项目,那么将这两个提交button都改为无线电select,以在两个选项之间切换,并且有一个新的单独的“提交表单”button。

在这种情况下,如果你想要一个单击选项,你可以使用Javascript来检测何时选中一个单选button,并立即自动提交表单。 (使用JavaScript进行用户界面,而不是表单处理)