Jquery发回返回调

时间:2013-06-06 01:12:54

标签: jquery

有人可以使用以下代码吗?这似乎不正确。

如何从回调中返回布尔值,并检查是否可以继续。

在我看来,布尔值始终为true,并且永远不会返回false。

另外,请在您更正之后描述代码如何对我有用。谢谢。

$("#divContent").on('blur', "input[id^='cak4premium0']", function () {
    var selectedPayoutFreq = $('input[name=SelectedPayoutFrequency]:checked').val();

    if (typeof selectedPayoutFreq === "undefined") {
        alert("Please select Payout Frequency");
        return;
    }

    var selectedValue = $(this).val();

    if (selectedValue = '') {
        alert("Please enter Premium");
        return;
    }

    var premiumValid = checkPremiumAmount();

    if (premiumValid) {
        var url = "/Annuity/Home/CalculateAnnuityPayout";
        var data = GetAnnuityMainPlan();
        data.SelectedPayoutFrequency = selectedPayoutFreq;
        $.post(url, data, DisplayCountAnnuity);
    }

});

function checkPremiumAmount() {
    var url = "/Annuity/Home/GetAnnuityMinMaxPremium";
    var data = GetAnnuityMainPlan();
    var currentPlan = $('.selectPlan').val();
    var retValue = true;
    $.post(url, data, null).done(function (data) {
        minPremium = data.MinPremium;
        maxPremium = data.MaxPremium;
        var premium = data.Premium;
        if (premium < minPremium) {
            if (currentPlan == 'CAK4') {
                alert("The minimum Premium is $" + minPremium);
                $("input[id^='cak4premium0']").val(minPremium);
                retValue = false;
            }
            else if (currentPlan == 'GAK4') {
                alert("For single premium less than " + minPremium + ", annuity installment will be paid yearly.");
                $("input[id^='cak4premium0']").val(minPremium);
                retValue = false;
            }
        }


        if (premium > maxPremium) {
            alert("The maximum Premium is " + maxPremium);
            $("input[id^='cak4premium0']").val(maxPremium);
            retValue = false;
        }

        return retValue;
    });

}

1 个答案:

答案 0 :(得分:1)

jquery - return value from callback function (in post request) into the function its inside of?

除非您进行同步AJAX调用(您可能不想这样做),否则您根本不能。

如果在您的代码中的多个位置使用此功能,最好的选择可能是允许它接收功能。

这样,您可以直接将代码直接传入,而不是依赖于函数返回的结果,因此可以确保能够使用响应。

var my_form = $('#my_form');

my_form.submit( valid_pass_sett );

function valid_pass_sett() {
    //code to remove errors left over from previous submissions - snipped
    pass_old = $('input[name=pass_old]').val();
    pass_new = $('input[name=pass_new]').val();
    pass_confirm_new = $('input[name=pass_confirm_new]').val();

    validate('password', pass_new, pswd_validation_callback); // async validation

    return false;  // cancel form submission
}

function validate(request_type, request_text, callback ) {
    $.post("http://www.example.com/ajax/validate.php",{
        type: request_type, 
        text: request_text
    }, callback );
}

function pswd_validation_callback( data ) {
    if ( data === 'valid' ) {
         // if valid, call the native .submit() instead of the jQuery one
        my_form[ 0 ].submit();
    } else {
         // Otherwise do your thing for invalid passwords.
         // The form has already been canceled, so no concerns there.
        $('#pass_new').addClass('error');
        $('#pass_confirm_new').addClass('error');
        $(error_string.format('Please enter a valid password.')).insertAfter('#pass_confirm_new');
        $('#pass_text_short').hide();
        $('#pass_text_long').show();
    }
}