【发布时间】:2018-04-05 00:12:47
【问题描述】:
我基本上尝试使用以下代码检查所有输入字段是否有效:
addData (input){
var isValid = false;
for (var i = 0, ii = input.length; i < ii; ++i) {
if ($('#' + input[i].id).hasClass('valid')) {
isValid = true;
}
}
if (isValid) {
//do stuff
}
}
input.length 总共为 3,我想检查所有 3 个输入字段是否都有效。在我的示例中,它只检查最后一个输入元素。在related posts 中,我找不到使用 for 循环解决它的方法。有人可以帮忙吗?
感谢所有有用的答案:最后,我调整了 Máté Safranka 的答案:
var isValid = input.toArray().every(element => $('#' + element.id).hasClass('valid'))使用
.toArray()将 jQuery 对象转换为Array>> see here 以获取更多信息。定义true或false不是 不再需要了。
【问题讨论】:
-
如果变量中已有输入,则无需使用其 ID 重新查找它们(它们可能没有 id),例如:
if ($(input[i]).hasClass("valid")) { -
var i = 0, ii = input.length; i < ii; ++i您使用的是i还是ii? -
您的代码确定any输入是否有效;如果其中至少一个是,则
isValid设置为true。 -
@ScottMarcus 再看一遍,
i用于循环,ii用于退出条件(这是一种非常规但有效的设置边界的方法)(非常规,因为有些人认为它是一个错误...) -
@freedomn-m 这就是我问的原因。我没有说这是一个错误,但恕我直言,使用名称如此相似的两个变量是一个非常糟糕的主意。这是一个等待发生的错误。
标签: javascript jquery for-loop