以下功能不起作用,因为我认为应该有.出于某种原因,只要validate函数返回false,循环就会中断.这是为什么?
这是我的代码:
function validateGroup(input) {
if (!input.value.match(/^[0-9]{0,2}$/)) {
$(input).addClass("invalidField");
return false;
}
$(input).removeClass("invalidField");
return true;
}
function validateClass(input) {
if (!input.value.match(/^[a-zA-Z0-9-]{0,9}$/)) {
$(input).addClass("invalidField");
return false;
}
$(input).removeClass("invalidField");
return true;
}
function validateData() {
var rows = document.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
var valid = true;
for (var i = 0, arrayLength = rows.length; i < arrayLength; ++i) {
valid = valid && validateClass(rows[i].getElementsByTagName("input")[0]);
valid = valid && validateGroup(rows[i].getElementsByTagName("input")[1]);
valid = valid && validateGroup(rows[i].getElementsByTagName("input")[2]);
}
return valid;
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
Sha*_*aun 12
如果valid为false,则语句valid && validateClass(...)将不会调用validateClass方法.我想你想要做的就是改变那些顺序
valid = validateClass(rows[i].getElementsByTagName("input")[0]) && valid;
valid = validateGroup(rows[i].getElementsByTagName("input")[1]) && valid;
valid = validateGroup(rows[i].getElementsByTagName("input")[2]) && valid;
Run Code Online (Sandbox Code Playgroud)
如果它已经知道结果为false,则Javascript不会考虑评估&&表达式的其余部分.