2010-01-24 38 views
39

假设我有以下的HTML表单:如果一个HTML表单有两个<input type =“submit”>按钮,我怎么知道点击了哪个?

<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表单的标准中?你们怎么做?

+1

可能重复[两个提交按钮在一种形式](http://stackoverflow.com/questions/547821/two-submit-buttons-in-one-form ) –

回答

49

是的,你可以依靠这个;它完全记录在here。具体相关行如下:

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

如果表单包含一个以上的提交按钮,只有激活提交按钮是成功的。

+13

当用户点击输入按钮而不是按下按钮时,表单上的第一个提交按钮将成为活动按钮。 – Scharrels

+4

不,你实际上不能依赖这种行为。在IE6中,您将获得提交的两个按钮的值 - 仅仅因为它的标准并不意味着它的正确实施。 – Erik

+0

Sh * t。 Erik,我该怎么做? – bodacydo

3

你可以依靠这种行为。你会得到输入的价值。我将使用javascript来切换隐藏的表单值,但由于您没有提到javascript,因此您没有多种选择。

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

4

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

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

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

如果您不确定这一点,可以将它们拆分为两种形式,并以此方式处理。

0

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

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

相关问题