MVC3,jQuery,表单提交:多个提交

时间:2012-06-05 04:03:31

标签: asp.net-mvc asp.net-mvc-3

我有以下jQuery代码拦截表单提交并将其转换为Ajax调用:

$("form.section_change").off("submit").on("submit", function () {
    var section = $(this).attr("data-section");
    var initializer = $(this).attr("data-initfunc");
    $.ajax({
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        error: function (a, b) {
            debugger;
        },
        success: function (result) {
            $("div#" + section).html(result);
            bindExtenders();
            if (initializer != null) {
                var func = window[initializer];
                func();
            }
        }
    });
    return false;
});

从概念上讲,发生的事情是ajax调用返回html,用于替换form标签内的div。 bindExtenders()函数调用“重新绑定”jQuery绑定,包括此片段描述的绑定。初始化函数是一个可选项,它运行指定的javascript函数。

当我第一次在页面上提交表单时,回调只按预期调用一次。但是,在随后的提交中,回调被多次调用(通常是两次,但有时会多于此次)。

我想知道如何执行此操作,以便只回调一次回调。

1 个答案:

答案 0 :(得分:0)

您可以这样做:

$('body').on('submit', 'form.section_change', function() {
// ...
});

这样你就不需要重新绑定了。见这里:jQuery