【问题标题】:How to detect input button value with jquery .on() submit如何使用 jquery .on() 提交检测输入按钮值
【发布时间】:2012-10-23 11:41:06
【问题描述】:

如何使用 jquery .on() submit 检测在此表单上按下了哪个输入按钮?

<form name="input" action="none" method="post">
 <input type="text" name="user">
 <input id="submit" type="submit" value="Submit">
 <input id="cancel" type="submit" value="Cancel">
</form>​​​​​​​​​​​​​​​



$('body').on('submit', 'form', function(e) {
      console.log($(this).attr("value"));
      return false;})

​ 这里有一个 jsfiddle 示例http://jsfiddle.net/dansalmo/suZHg/

我查看了很多地方并尝试了许多不同的方法来尝试检测 .on() 方法中的输入提交按钮值,但我无法得到它。

在我的示例中 $(this).attr("value") 和 $(this).val() 出现 undefined

然后我希望能够使用 ajax 提交表单,因此仅检测按钮不是这个问题的重点。如果无法使用 .(on) submit 进行操作,那么了解这一点会有所帮助,而不是使用不涉及表单提交的替代按钮检测方法进行回答。

【问题讨论】:

  • 你提交的不是BODY,而是FORM。
  • @Diodeus 那是事件委托,很好

标签: jquery input submit


【解决方案1】:

我没有看到从提交处理程序获取此信息的任何方式,但您可以从按钮单击事件中获取信息,然后在提交事件中使用它。

$('body').on('submit', 'form', function(e) {
      console.log($(this).data('clicked'));
      return false;
});
$('form').on('click', 'input[type=submit]', function(e) {
      $(this.form).data('clicked', this.value);
});

http://jsfiddle.net/suZHg/15/

【讨论】:

  • 这是一个很好的答案。它解释说我无法检测到 .(on) 直接提交中的按钮,但随后提供了一种使用 .(on) 的辅助函数来执行此操作的方法。谢谢。
  • 我也喜欢这个解决方案是通用的,因此它适用于页面上的任何表单。
  • 如果表单放在表格中,$('form').on('click'... 事件不会触发,除非它更改为 $('body').on ('点击'...jsfiddle.net/dansalmo/suZHg/16
  • @dansalmo 无效的 HTML 会导致各种未定义的问题。
  • 我现在明白了,缺少 。谢谢。
【解决方案2】:

您可以拦截提交按钮的点击事件,然后手动触发表单提交,传入对原始按钮的引用:

        $("input:submit").on("click", function () {
            $("form[name='input']").trigger("submit", this);
            return false;
        });

        $('body').on('submit', 'form', function (e, button) {
            console.log($(button).val());
            return false;
        })

【讨论】:

    【解决方案3】:
    $('input:submit').click(function(){alert(this.id); return false;});
    

    【讨论】:

      【解决方案4】:

      $(this) 对应这里的form..

      而不是已经提交的button

      试试这个

      $('body').on('click', 'input[type="submit"]', function(e) {
          e.preventDefault();
          console.log($(this).attr('value'));
          return false;
      })​
      

      【讨论】:

      • 是的,那部分我能弄清楚。仍然不知道如何从按下的按钮中获取提交值。
      • 感谢您的努力回答。您的解决方案确实检测到按钮值,但丢失了要提交的表单。我希望获得按钮信息,而不必采取技巧来获取表单信息。在“提交”中似乎应该有一种方法。
      【解决方案5】:
      $("input[type='submit']").click(function(e) {
            console.log($(this).val());
            return false;
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 2019-07-28
        • 1970-01-01
        • 2018-01-28
        相关资源
        最近更新 更多