0

我完全确定如何完整地描述我的问题。不过,我会试一试。

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

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

如果不满足条件,则 trigger2(提交)正确处理并提交表单。但是,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;
        }
    });
4

1 回答 1

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
于 2012-12-12T02:10:15.207 回答