javascript - jQuery 返回多个函数不起作用

标签 javascript jquery validation

我正在做一个简单的表单验证,我有 3 个函数来检查输入文本字段、一个选择字段和 2 个单选按钮。对于每个组,我都创建了一个函数,即 3 个函数。

我已经单独测试了这些功能,它们正在工作。但是,如果我在脚本末尾同时使用这 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();
    });
}); 

最佳答案

&&short circuit运算符(operator)。当 a 为假时,它会阻止对 a && b 中的 b 求值。

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

    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();
});

关于javascript - jQuery 返回多个函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20613179/

相关文章:

jquery 动态地将选择器添加到现有函数作为监视对象

python - 如何在 Django 中验证电话号码?

javascript - JS验证IP :Port

javascript - JQuery 从另一个函数异步调用输入值

javascript - 如何在单个页面上显示多个 "Swiper"幻灯片

javascript - 求解代数方程的思维过程?

javascript - 使用 jQuery AJAX 加载 JSON 数据

python - 匹配所有韩语(韩语)字符和音节 block 的正则表达式

javascript - Chrome 内容脚本未加载 chrome.google.com

javascript - 构造函数中的函数名称有什么不同?