【问题标题】:How do you determine which submit was used to submit a form with jQuery?您如何确定使用 jQuery 提交表单时使用了哪个提交?
【发布时间】:2012-03-30 17:58:08
【问题描述】:

请记住,用户不必单击提交输入。他们可以切换到它并按下回车键。

所以考虑到可以提交表单的所有方式,您如何确定在提交事件中使用哪一种方式来提交表单。我在两个提交元素上有不同的名称。

【问题讨论】:

  • 创建隐藏输入。在提交之前更改值。
  • 乔纳森,我知道在答案中发表简单的评论会让人感到内疚,但这对我来说是一个很好的答案!你也可以为它买点甜点。 ;-)
  • 我要补充一点,可以给每个提交按钮一个唯一的名称(它应该已经有一个显示文本的值),然后你可以检查哪个变量存在以确定哪个表单被点击使用隐藏输入。

标签: javascript jquery forms


【解决方案1】:

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

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

edit — 如果表单提交是因为您在文本字段中点击“Enter”而发生的,浏览器会选择第一个提交按钮(我认为;这似乎至少是 Firefox 所做的)。 (等等;从头开始;Firefox 似乎在按下“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>

在文本字段中点击“Enter”将导致“submit1=submit1”成为表单参数,就像在“submit1”获得焦点时点击“Enter”一样。切换到“submit2”并点击“Enter”将导致“submit2=submit2”成为参数之一。

在任何一种情况下,参数列表中都只会显示一个“提交”输入。

【讨论】:

  • +1,但是带有一些 cmets 的 sn-p 会更清楚 =)
  • 两个“提交”可以有相同的“名称”和不同的“值”。
  • 怎么看submit方法中提交了哪些表单参数?
  • 您可以通过在服务器上进行测试“看到”它们。您如何处理服务器端的 any 参数?您的服务器代码应该知道它应该期待不同的“提交”按钮,因此它可以通过查找特定参数名称来判断哪个按钮被按下,或者您可以为所有按钮提供相同的名称和不同的 值 i> 所以服务器只检查值。
【解决方案2】:

不要使用不同的名称,而是使用不同的值,例如:

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

如果您希望标签与值不同,也可以使用按钮代替输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-02
    • 2014-02-25
    • 2015-08-04
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2017-01-20
    • 2016-10-19
    相关资源
    最近更新 更多