确认后发送表格

时间:2016-07-20 14:24:46

标签: javascript jquery

我有表格,用户可以删除帐户。这是非常简单的形式。我希望用户确认删除该帐户。我有功能确认。我无法编辑它。

function confirmation(message, ok, cancel, callback) {
    if (!$('#confirmation').length) {
        var string = 
        'some html';
        $('<div/>').attr('id', 'confirmation').css("display", "none").html(string).appendTo('body');
    }

    var result;
    $.fancybox($('#confirmation'), {
        modal : true,
        autoSize: true,
        beforeShow: function() {
            $("#confirmation-message").text(message);
            $("#confirmation-ok-caption").text(ok);
            $("#confirmation-cancel-caption").text(cancel);

            $("#confirmation-btn-ok").unbind("click").bind("click", function() {
                result = true; 
                $.fancybox.close();
                return false;
            })
            $("#confirmation-btn-cancel").unbind("click").bind("click", function() {
                result = false; 
                $.fancybox.close();
                return false;
            })
        },
        afterClose: function() {
            callback.call(this, result);
        }
    });
}

此代码不起作用,它不发送表单:

    $(document).ready( function(){ 
        $("form").submit(function() { 
            confirmation("Delete?", "Yes", "No", function (result) {
                 if(result) $("#user-form").submit();
            });
            return false;
        }) 
    });

我该如何编辑代码? 如果我按return false;格式更改return true,则 UPD 会一直发送!

1 个答案:

答案 0 :(得分:0)

看起来你有一个无限循环:

提交表单时,您是 (1)运行confirmation函数来验证表单,如果一切正常,那么你就是 (2)使用submit触发$("#user-form").submit();,这会导致浏览器返回(1),此循环将永远不会结束。

有几种方法可以解决这个问题。我想最快的方法是有一个全局变量来告诉你表单是否经过验证,如果是的话 - 在调用true之前在submit函数内返回confirmation

var formConfirmed = false;
function confirmation(message, ok, cancel, callback) {
...

提交功能内部:

$(document).ready( function(){ 
    $("form").submit(function() { 
        if (formConfirmed) {
            return true;
        }

不要忘记在formConfirmed = true代码中设置fancybox