我有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
}