繁体   English   中英

jQuery $()。每个退出都为时过早

[英]JQuery $().each exiting too early

我正在使用下面的功能来验证Web表单上的几个输入字段。 该函数使用jQuery .each()迭代遍历字段。 ValidateInput函数验证每个单独的输入字段,并返回true或false。

function ValidateForm() {
    var result = true;
    $('[data-regex]').each(function() {
        result = result && ValidateInput(this);
        // return true;
    });

    if ( result == false ) {
        $(".alert").show();
    }

    return result;
}

我遇到的问题是,一旦任何单个输入字段.each()通过.each().each()就会提前终止。 我知道如果function()返回false,则.each()将终止,但我看不到我是怎么做的。 我什至尝试添加一个显式的return true; 作为function()的最后一行,但这没有区别。

为了完整ValidateInput ,这里是ValidateInput

function ValidateInput(thisInput) {
    var fieldName = $(thisInput).attr('name');
    var fieldValue = $(thisInput).val();
    var regex = $(thisInput).attr('data-regex');
    console.log('validating field "' + fieldName + '" value "' + fieldValue + '" with regEx "' + regex + '"';
    var re = new RegExp(regex);
    var result = re.test(fieldValue);
    if ( result ) {
        console.log('- passed');
        $(thisInput.closest(".form-group")).addClass("has-success").addClass("has-feedback")
    } else {
        console.log('- failed');
        $(thisInput.closest(".form-group")).addClass("has-error").addClass("has-feedback")
    };

    return result;
}

调用ValidateForm的代码如下:

<input type="submit" name="ct108" value="Save User" onclick="return ValidateForm();" />

我想念什么?

您的ValidateInput方法在第一个未通过验证的方法之后停止处理,因为此行:

result = result && ValidateInput(this);

&&工作方式是,如果左侧的项目为true,则将右侧的值作为值返回,否则将左侧的值作为值返回。

您可以通过翻转以下内容来确保每个内容均得到处理:

result = ValidateInput(this) && result;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM