2012-03-30 116 views
1

请记住,用户不必点击提交输入。他们可以选择并推入。你如何确定使用jQuery提交表单的提交?

因此,考虑表单可以提交的所有方式,如何确定在提交事件中使用哪个表单提交表单。我在这两个提交元素上有不同的名字。

+3

创建一个隐藏的输入。在提交之前更改该值。 – 2012-03-30 17:59:43

+0

乔纳森,我知道对一个答案做一个简单的评论感到内疚,但这对我来说是一个很好的答案!你不妨为它准备一些甜品。 ;-) – 2012-03-30 18:02:02

+2

我会补充说,可以给每个提交按钮一个唯一的名称(它应该已经有一个显示文本的值),然后你可以检查哪个变量存在来确定哪个窗体被点击而不使用隐藏的输入。 – 2012-03-30 18:15:46

回答

4

触发提交按钮—的任何操作,无论是实际的鼠标点击还是某些键盘操作—仍会触发“单击”事件,并且仍会导致输入被包含为表单参数。

也就是说,如果您看到带有输入字段名称和值的表单参数,则知道该提交按钮已被单击。

编辑 —如果表单提交是因为你打在文本字段中“输入”,浏览器选取第一个提交按钮(我认为,这似乎是什么火狐至少一样)。 (等待;从头开始;火狐似乎找到下一个具有焦点时,“Enter”键按下的元素之后,“提交”输入...)

这样:

<form action='whatever' method='post'> 
    <input type='text' name='text'> 
    <input name='submit1' value='submit1' type='submit'> 
    <input name='submit2' value='submit2' type='submit'> 
</form> 

敲击“回车”在文本字段将导致“submit1 = submit1”作为表单参数,当“submit1”具有焦点时将会触击“Enter”。选中“submit2”并点击“Enter”会导致参数中包含“submit2 = submit2”。

无论哪种情况,只有一个“提交”输入显示在参数列表中。

+0

+1,但带有一些注释的片段将使所有更清晰=) – Prusse 2012-03-30 18:16:30

+0

而且这两个“提交”可以具有相同的“名称”和不同的“值”。 – Prusse 2012-03-30 18:37:04

+0

您如何看到提交方法中提交了哪些表单参数? – Joe 2012-03-30 19:07:53

1

而不是使用不同的名字,使用不同的值,e.g:

<input type="submit" name="submit" value="Submit A"> 
<input type="submit" name="submit" value="Submit B"> 

你也可以用按钮来代替投入,如果你想将标签从不同的值。