Jquery:匿名函数调用在submit()中不起作用

时间:2011-11-18 17:10:13

标签: jquery forms function submit anonymous

我在使用submit()函数时遇到问题。 我需要在选中一个复选框后提交一份表格,所以我有一个表格,其中有一个复选框。

所以,当我这样做时,它正在发挥作用:

$(function() {
    $("#myCheckbox").change(function() { 
        $(this).parentsUntil("#feuilles_form").parent().submit();
    });
});

但是当我尝试这样的事情时,它不再起作用了:

$(function() {
    $("#myCheckbox").change(function() { 
        $(this).parentsUntil("#feuilles_form").parent().submit(function() {
            .....
        });
    });
});

我的控制台或萤火虫没有记录...... 我需要这样做,因为我将不得不使用Ajax进行下一步:在我的页面上刷新div。

你有解决方案吗?

提前thx!

的Seb

3 个答案:

答案 0 :(得分:3)

使用.submit(function(){})注册要在提交时调用的函数。

试试这个:

$(this).parentsUntil("#feuilles_form").parent().submit(function() {
}).submit();

由于您提到了ajax,因此在更改事件中注册匿名函数可能会导致向提交处理程序注册多个匿名函数。的 example


在dom ready期间注册.submit()很可能总是更好。

$(function() {
    var $form = $("form");
    $form.submit(function() {
        $("form").append("<h1>submited</h1>");
        return false;
    });

    $(":checkbox").change(function() {
        $form.submit();
    });
});

<强> Example

答案 1 :(得分:1)

如上所述,第二个示例只是binds您对提交事件的匿名函数。你仍然需要触发它; e.g。

    $(this).parentsUntil("#feuilles_form").parent().submit(function() {
        .....
    }).submit();

答案 2 :(得分:1)

正如the docs所解释的那样,使用无参数调用类似submit的函数类似于调用trigger,这就是第一个有效的原因。如果你传递参数,就像调用bind一样,它只设置事件处理程序,但不会触发事件。

解决方案:两者兼顾。为什么不在提交调用后执行函数的内容,因为你是触发它的那个?它需要是一个处理程序吗?