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

izo*_*ate 8 javascript forms validation jquery

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

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

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

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

现在,对于第3个动作,contactform()我想说if validator() = true(即没有输入为空),然后继续下一个代码.

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

Vis*_*ioN 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
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:在@am_not_i_am 的帮助下进行了极大的更新.谢谢!

  • @muppethead`filter`方法仅输出那些不包含任何"value"的`input`元素.对于那些元素`addClass`添加了类`"error"`.函数`validator`只返回`true`**如果空`input`元素的数量等于'0`.难道你不容易理解吗? (2认同)
  • @muppethead:VisioN展示了如何以最简洁的形式编写它的一个很好的例子.要理解它,你可以稍微分开一些,比如[本例](http://jsfiddle.net/wgYPJ/).最终,您将返回将过滤集的`.length`与'0'进行比较的结果.如果你将`0`作为左手操作符放到`===`,可能会更容易理解,所以`return 0 === $("form input").filter(...).length`. (2认同)