jQuery返回多个函数;不起作用

jQuery returning multiple functions doesn't work

本文关键字:不起作用 函数 返回 jQuery      更新时间:2023-09-26

我正在进行一个简单的表单验证,我有3个功能,可以检查输入文本字段、一个选择字段和2个单选按钮。对于每组,我都做了一个函数,所以有3个函数。

我已经单独测试了这些功能,它们正在运行。但如果我在剧本结尾把它们三个一起使用,只有一个有效。

有人能告诉我我需要做什么吗?

// Form validation
$(function() {
    function wz_validation() {
        var ok = true;
        $('input[validate="true"]').each(function() {
            if($(this).val() == '') {
                ok = false;
                $(this).addClass('red_border');
            }
            else $(this).removeClass('red_border');
        });
        return ok;
    }
    // Check Bank select box on checkout page
    function wz_val_select() {
        if($(".payment select")) {
            if($(".payment select option:selected").val() == "") {
                $(".payment select").addClass('red_border');
                return false;
            }
            else{
                $(".payment select").removeClass('red_border'); 
                return true;
            }
        }
    }
    function wz_radio_shipping() {
        var form = $("#shipping_form");
        if(form.length) {
            if(form.find('input[name=wz_shipping]:checked').length == 0) {
                $("#checkout_shipping").addClass('red_border');
                return false;   
            }
            else{
                $("#checkout_shipping").removeClass('red_border');
                return true;    
            }
        }
    }
    var wz_form = $('#wz_form1, #wz_form2, #wz_form3, #wz_form7');
    $(wz_form).submit(function() {
        return wz_validation() && wz_radio_shipping() && wz_val_select();
    });
}); 

&&是一个短路运算符。当a为假时,它防止在a && b中对b进行评估。

如果希望调用所有三个函数,即使其中一些函数返回false,如果只返回布尔值,请使用&。由于&生成01,您可能需要使用!!:将结果转换为布尔值

    return !!(wz_validation() & wz_radio_shipping() & wz_val_select());

你可能还想写得更明确一点:

$(wz_form).submit(function(e) {
    var good = true;
    good &= wz_validation();
    good &= wz_radio_shipping();
    good &= wz_val_select();
    if (!good)  e.preventDefault();
});