0

我有以下 jQuery Ajax 代码:

    $("#new_form").submit(function (event) {
        event.preventDefault();
        $.post("/home/new_ajax", $(this).serialize(), function (data) {
            if (data.errors == '') {
                $("#new_form").submit();
            } else {
                alert(data.errors);
            }
        }, "json");
    });

然而,由于

event.preventDefault();

这条线不起作用:

 $("#new_form").submit();

有没有办法解决这个问题?

4

2 回答 2

3

您可以使用.trigger()而不是.submit()-- 它允许您传递额外的参数,然后您的事件处理程序可以使用这些参数:

$("#new_form").submit(function (event, skipCustomStuff) {
    // If second parameter is truthy, let the submission happen
    if (skipCustomStuff) return;

    event.preventDefault();
    $.post("/home/new_ajax", $(this).serialize(), function (data) {
        if (data.errors == '') {
            // trigger submission passing in true as second parameter
            $("#new_form").trigger('submit', [true]);
        } else {
            alert(data.errors);
        }
    }, "json");
});
于 2012-11-05T21:56:31.043 回答
1

最简单的方法是这样做$("#new_form")[0].submit(),它将绕过任何 jQuery 绑定的处理程序并提交表单。

$("#new_form").submit(function (event) {
    event.preventDefault();
    $.post("/home/new_ajax", $(this).serialize(), function (data) {
        if (data.errors == '') {
            $("#new_form")[0].submit();
        } else {
            alert(data.errors);
        }
    }, "json");
});
于 2012-11-05T22:10:10.633 回答