繁体   English   中英

无法评估Java for循环中数组的所有值

[英]Trouble evaluating all values of an array in a for loop in Javascript

我正在尝试编写自己的函数来评估输入字段,以查看它们是否具有值。 所以我写了这个for循环:

$("button").click(function(){
    for (var ii = 0; ii < personalInfo.length; ii++) {
      if ($(personalInfo[ii]).val() == 0) {
        $(personalInfoLabels[ii]).addClass("required");
      }
      else{
        $("button").parent("fieldset").slideUp();
      }
    };
});

到目前为止,循环没有问题,可以识别出空的数组位置并正确标记它们。

但是,如果任何头寸都有值,则事件发生。 我该如何说循环的每个位置是否都有一个值,即触发事件,但如果没有标记必填字段,该如何说?

代码的JSFiddle可在http://jsfiddle.net/bjKX7/获得。

我重新整理了一下您的代码,请点击此处:

$("#cont-one").click(function () {
    var error = 0;
    for (var ii = 0; ii < personalInfo.length; ii++) {
        if ($(personalInfo[ii]).val() == 0) {
            $(personalInfoLabels[ii]).addClass("required");
            error++;
        } else {
            $(personalInfoLabels[ii]).removeClass("required");
        }
    };
    if (error) {
        return false;
    }
    $("#cont-one").parent("fieldset").slideUp();
});

该代码将遍历所有输入,并将类添加到所需的类中。 万一已填满,它也会删除该类。 我还添加了一个return false;return false; 如果有错误,则函数和表单提交将在此处停止(如果有错误)。

请注意,输入字段是自动关闭的,因此请像在演示中一样在输入中添加/关闭代码。

在这里演示

将布尔值保留在循环外,仅当所有字段都不为空时才为true

$("button").click(function(){
    var all_good = true;
    for (var ii = 0; ii < personalInfo.length; ii++) {
        if ($(personalInfo[ii]).val() !== "") { // not empty
            $(personalInfoLabels[ii]).addClass("required");
            all_good = false;
        } else {
            $(personalInfoLabels[ii]).removeClass("required"); 
        }
    };
    if (all_good) {
        $("button").parent("fieldset").slideUp();
    }
});

顺便说说:

$(personalInfo[ii]).val() == 0

由于胁迫而起作用,这很难看。 我会写:

$(personalInfo[ii]).val() === "" // or
$(personalInfo[ii]).val().length === 0

因为那是你的意思

输入字段中的值始终是字符串,而不是数字,因此您甚至可以使用===因为您知道类型为string 同样, String.length 始终是一个number

如果一切正常,请首先验证并在最后验证.slideUp() 像这样

// validate first
for (var ii = 0; ii < personalInfo.length; ii++) {
    if ($(personalInfo[ii]).val() == 0) $(personalInfoLabels[ii]).addClass("required");
}

// check if there are any marked as required, if not, slideUp
var fs = $("#cont-one").parent("fieldset");
if (fs.find('.required').length == 0) fs.slideUp();

暂无
暂无

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

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