在对话框(模态)中提交触发器失败的Jquery

时间:2012-12-12 02:02:37

标签: jquery html triggers

我完全相信如何完整地描述我的问题。但是,我会试一试。

我使用Jquery为HTML元素分配了几个触发器。触发器1,专门为此特定表单验证项目。在确定触发器1的验证后,第二个触发器是触发器。

发生了什么,你会看到下面的代码,if ($(".Reason").val() == 4) {是否会显示一个对话窗口,该窗口将提供两个选项,是/否。是的将调用触发器2(提交),否则关闭以进行更正...

如果不满足条件,则触发器2(提交)正确处理并发布表单。但是,如果符合条件,就像return false一样。

有些线路是不敬的,但我把它们留在那里......如果要删除共识,我会。

很抱歉代码很多。

希望有人可以提供帮助!

$(".validateForm").click(function () {

        if ($(".Reason").val() == 4) {
            //bankingModal
            ExpectedAmount = $(".CloseAmount").val();  
            cashTotal = parseInt($(".cashtotal").val());                  
            chequeTotal = parseInt($(".chequeTotal").val());         

            formTotal = cashTotal + chequeTotal;
            formTotal = parseFloat(formTotal).toFixed(2);

            if (formTotal !== ExpectedAmount ) {
                $(".bankModal").dialog({
                    resizable: false,
                    height: 210,
                    width: 400,
                    modal: true,
                    position: 'center',
                    buttons: {
                        'Yes - Submit': function () {
                             $('.submit').click()
                            $(this).dialog("close");

                        },
                        'No - Cancel': function () {
                            $(this).dialog("close");
                        }
                    }
                })
            }
        } else {
            //submitBanking();
            $('.submit').click()
        }
        return false;
})

// The following is the second trigger.

$('.submit').click(function () {

// Unset error

        formErr = false;
        window.onbeforeunload = null;

        // Validation for Change Request
        if ($(".outgoing").length > 0) {
            if (validateChangeRequest()) {
                formErr = true;
            }
        }

        // If text box is empty change values to 0.00
        $('.cashSum', '.cashSumOut').each(function () {
            if (!$(this).val()) {
                $(this).val('0.00');
            }

        });

        // Check if numeric values are ok prior to submit.
        $(".cashAmount").each(function () {
            if (isNaN($(this).val())) {
                modal("", "Only numbers are permitted");
                formErr = true;
            }
            if (checkNegatives($(this))) {
                modal($(this), "Negative values are not permitted");
                formErr = true;
            }
        });
        if (formErr) {
            return false;
        }
        if ($("#cashCheque").length != 0) {          
            return false;
        }
    });

1 个答案:

答案 0 :(得分:0)

为什么每次满足条件时都会创建对话框。

只需在DOM ready handler中创建一次,只需在满足条件时打开对话框。

$(".validateForm").click(function() {

    if ($(".Reason").val() == 4) {
        //bankingModal
        ExpectedAmount = $(".CloseAmount").val();
        cashTotal = parseInt($(".cashtotal").val());
        chequeTotal = parseInt($(".chequeTotal").val());

        formTotal = cashTotal + chequeTotal;
        formTotal = parseFloat(formTotal).toFixed(2);

        if (formTotal !== ExpectedAmount) {
            $(".bankModal").dialog('open');
        }
    } else {
        //submitBanking();
        $('.submit').click()
    }
    return false;
});

$(".bankModal").dialog({
    resizable: false,
    height: 210,
    width: 400,
    modal: true,
    position: 'center',
    autoOpen : false,
    buttons: {
        'Yes - Submit': function() {
            $('.submit').click()
            $(this).dialog("close");

        },
        'No - Cancel': function() {
            $(this).dialog("close");
        }
    }
});​

<强>更新

假设没有错误时提交表单

if (formErr) {
    return false;
}
if ($("#cashCheque").length != 0) {          
    return false;
}

$('form').submit(); // submit when no errors