0

私は自分の問題を完全に説明する方法を完全に確信しています。しかし、私はそれを試してみます。

Jqueryを使用してHTML要素に割り当てられたいくつかのトリガーがあります。トリガー1は、この特定のフォーム専用のアイテムを検証します。2番目のトリガーは、トリガー1の検証が決定された後のトリガーです。

何が起こっているのか、以下のコードif ($(".Reason").val() == 4) {がダイアログウィンドウを表示するかどうかを確認します。ダイアログウィンドウには、はい/いいえの2つのオプションが表示されます。はい、トリガー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 に答える