返回javascript函数的true / false值,然后根据它做一些东西

时间:2012-05-28 18:38:42

标签: javascript jquery forms validation

我正在构建一个联系表单,我需要有关jQuery验证器的帮助。

function contactform() {
    $("form #submit").on("click", function() {
        $("form input").removeClass("error");
        validator();
        // 3rd action goes here
    });
});

validator()检查是否有任何输入为空,如果是,则为其添加错误类:

function validator() {
    $("form input").each(function() {
        var value = $(this).val();
        if (value.length <= 0) {
            $(this).addClass("error");
            return false;
        }
    });
});

现在,对于contactform()中的第3个操作,我想说如果validator() = true(即没有输入为空),则继续下一个代码。

我似乎无法返回validator()的值。有人知道最好的方法吗?

3 个答案:

答案 0 :(得分:8)

以下是使用filter方法的另一种解决方案:

function validator() {
    return $("form input").filter(function() {
        return $.trim(this.value).length == 0;
    }).addClass("error").length == 0;
});

function contactform() {
    ...
    if (validator()) {
        // it's OK
    } else {
        // there are errors
    }
}

更新:使用the help @am_not_i_am进行了极大的更新。谢谢!

答案 1 :(得分:4)

您遇到的问题是您有一个嵌套的函数和闭包,这会阻止您直接返回值。

这样的事情可以解决问题:

function validator() {
    var result=true;
    $("form input").each(function() {
        var value = $(this).val();
        if (value.length <= 0) {
            $(this).addClass("error");
            result = false;
        }
    });
    return result;
});

答案 2 :(得分:3)

function validator() {
    var result = true;
    $("form input").removeClass("error");
    $('form input').each(function() {
           if(!$.trim(this.value)) {
             $(this).addClass('.error');
             result = false;  
           }
     });
    return result;
}


function contactform() {
    $("form #submit").on("click", function() {
        if(validator()) { // pass the validation

        } else { // fail validation

        }
        // 3rd action goes here
    });
});