jQuery live在无限循环中提交caugth

时间:2011-04-30 16:57:10

标签: submit form-submit infinite-loop jquery

我正在尝试使用jQuery提交表单,它工作得很好,直到我必须添加一个确认窗口,以便用户可以在提交之前查看他们的数据,这是代码:

$("#create-group-form").live('submit', function(e){
    e.preventDefault();
    var form = $(this);
    jConfirm('Here I display the group info...', 'Confirm Group', function(r){
        if ( r ) {
            form.submit();
        }
    });
});

我正在使用jQuery的jAlert插件,但它的工作方式与常规的不同样式的确认提示一样,前提是当用户在提示符下单击“确定”时它再次进入实时提交陷入无限循环。

在我确认后,有没有办法阻止它再次进入此事件?我想我可以解开它,但我还没有找到成功的方法。

BTW我正在使用实时提交,因为表单位于模态窗口中。

提前致谢!

3 个答案:

答案 0 :(得分:9)

调用表单元素的submit方法,而不是jQuery选择方法。这意味着不会触发jQuery处理程序:

$("#create-group-form").live('submit', function(e){
    e.preventDefault();
    var form = this; // <-- this line changed
    jConfirm('Here I display the group info...', 'Confirm Group', function(r){
        if ( r ) {
            form.submit();
        }
    });
});

答案 1 :(得分:1)

在您再次调用submit()之前,这将取消绑定您的事件处理程序。

$("#create-group-form").live('submit', function(e){
    e.preventDefault();
    var form = $(this);
    jConfirm('Here I display the group info...', 'Confirm Group', function(r){
        if ( r ) {
            form.unbind('submit');
            form.submit();
        }
    });
});

答案 2 :(得分:0)

将表单上的提交按钮替换为button标记,其ID为#psuedo-submit。单击#psuedo-submit时,弹出模态窗口并在确认时进行实际提交。