我有5个div标记具有相同的类。每个div标记都有一个文本框和一个带有数字的下拉列表。

如何检查所有这些div标记的文本框和下拉列表是否为空,以及是否为“执行某些操作”。

$step是一个包含所有div标签的数组。

var $step = $(".wizard-step2:visible");


我的文本框有一个类Comment,而我的下拉列表中有一个类Grade

到目前为止,我已经对此进行了编码,但是它是错误的,我不希望它检查每个div标记,我希望它检查所有它们。

这是错误的代码:

var Comment = $step.find(".Comment").val();
var Grade = $step.find(".Grade").val();

for (var i = 0; i < $step.length; i++) {
    if (Comment != null && Grade > 0) { {
        // do this
    }
    } else {
        alert("You must enter both fields");
    }
}


编辑:

我认为我没有很好地解释我的问题,我的代码就像我在此问题上得到的所有答案一样。我不想做这个if语句来检查每个div标签。我希望能够检查所有div标签是否具有任何空字段,然后执行某些操作”,否则,如果所有div标签字段都已填充,则执行操作。

允许用户将这些字段保留为空,但是如果所有div标签字段均已填写,请执行某些操作。

我不想为每个div标记执行if语句,如果所有div标记都具有空字段或全部为字段,则想执行if语句。

可以说我有5个div标签。我已经填满了其中的4个,当我填满最后一个5 div标签时,这些填满了。在这里,我要执行此操作,否则什么也不会发生。我不希望if语句在已填充的div标签1、2、3、4上执行我希望if语句在填充5th时发生,因为所有div标签都已填充,否则什么也不会发生

最佳答案

找到每个类的填充元素,并使用结果选择的长度执行测试:

var $step = $(".wizard-step2:visible");

// returns true if the element's value is not null
function filled() {
    return !!this.value;
}

// count the number of non-empty elements
var n_step     = $step.length;
var n_comments = $step.find('.Comment').filter(filled).length;
var n_grades   = $step.find('.Grade'  ).filter(filled).length;

if (n_comments === n_step && n_grades === n_step) {
     // all filled
} else if (n_comments === 0 && n_grades === 0) {
     // all empty
} else {
     // mixed - do nothing
}

10-08 16:47