Jquery: вызов функции не работает в submit () - PullRequest
2 голосов
/ 18 ноября 2011

У меня проблемы с функцией submit ().Мне нужно отправить форму после проверки флажка, поэтому у меня есть форма, в которой у меня есть флажок.

Поэтому, когда я делаю это, это работает:

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

Но это не такработает больше, когда я пытаюсь что-то вроде этого:

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

И я не получаю лог с моей консоли или firebug ... Мне нужно сделать это, потому что мне придется использовать Ajax для следующего шага: обновить div на моей странице.

Есть ли у вас решение?

Спасибо заранее!

Себ

Ответы [ 3 ]

3 голосов
/ 18 ноября 2011

Используя .submit(function(){}), вы регистрируете функцию для вызова, когда происходит отправка.

Попробуйте это:

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

Поскольку вы упоминаете ajax, регистрация анонимной функции в событии изменения может вызвать несколько анонимных функций, зарегистрированных в обработчике отправки. пример


Скорее всего, всегда будет лучше зарегистрировать .submit() один раз во время готовности к игре.

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

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

Пример

1 голос
/ 18 ноября 2011

Как объяснит документы , вызов функции типа submit с без аргументов аналогичен вызову trigger, поэтому первый метод работает. Если вы передаете аргументы, это похоже на вызов bind, который только устанавливает обработчики событий, но не запускает событие.

Решение: сделайте оба. Почему бы просто не выполнить содержимое вашей функции после вызова submit, так как вы все равно запускаете его? Это должен быть обработчик?

1 голос
/ 18 ноября 2011

Как написано, во втором примере только binds ваша анонимная функция для события submit. Вы все еще должны вызвать это; например,

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