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

bod*_*ydo 43 html forms submit

假设我有以下HTML表单:

<form>
...
<input type="submit" name="queue" value="Queue item">
<input type="submit" name="submit" value="Submit item">
</form>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Tim*_*rry 54

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

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

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

  • 当用户点击输入按钮而不是按下按钮时,表单上的第一个提交按钮将是活动按钮. (14认同)
  • 我刚刚学到了新东西; 我总是使用`<button type ="submit">`而不是`<input type ='submit'>` - 显然IE6会正确地处理它,而不是前者,这是让我发表评论的原因. (7认同)
  • 不,你实际上不能依赖这种行为.在IE6中,您将获得提交的BOTH按钮的值 - 仅仅因为它的标准并不意味着它的正确实现. (5认同)
  • 根据http://www.vancelucas.com/blog/ie6-and-multiple-button-submit-elements/,多个输入类型='submit'(就像你正在使用的)实际上是在IE中正确处理的,它是只是按钮类型='提交'不是.不幸的是我无法从IE进入测试,所以我无法确定.其他有用的阅读:http://muffinresearch.co.uk/archives/2005/12/08/fun-with-multiple-submit-buttons/.显然,IE并不像你期望的那样使用输入按钮.叹. (2认同)

mau*_*ris 5

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

<input type="submit" name="queue" value="Queue item">被点击时,现场"排队"将被设置和"提交"不会.

而当另一个被点击时,将设置字段"submit",而"queue"将不会.

如果您对此不满意,可以将它们分成两种形式并以此方式进行处理.