3

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

<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 进行操作,那么了解这一点会有所帮助,而不是使用不涉及表单提交的替代按钮检测方法进行回答。

4

5 回答 5

4

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

$('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/

于 2012-11-02T19:44:59.033 回答
1

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

        $("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;
        })
于 2012-11-02T19:43:31.107 回答
0
$("input[type='submit']").click(function(e) {
      console.log($(this).val());
      return false;
});
于 2012-11-02T19:15:38.720 回答
-1

$(this) corresponds to the form here..

And not the button that had submitted

Try this

$('body').on('click', 'input[type="submit"]', function(e) {
    e.preventDefault();
    console.log($(this).attr('value'));
    return false;
})​
于 2012-11-02T19:15:50.267 回答
-1
$('input:submit').click(function(){alert(this.id); return false;});
于 2012-11-02T19:19:29.750 回答