[英]Break jQuery function execution on failure inside .each() loop
我有以下表格
<input class="required" id="name" value="some content"/>
<input class="required" id="address" value=""/>
<input class="required" id="lastname" value="some content"/>
以及以下jQuery函数。 它包含一个.each()
循环来检查某些输入。 当检查失败时,该函数应中断并返回false
。
function check() {
$('.required').each(function() {
var input = $(this);
console.log(input.attr('id'));
if (input.val() == null || input.val() == '') {
console.log('*** Failed ***');
return false;
}
});
console.log('Other code');
return true;
}
不幸的是,当我运行代码时,我看到以下输出:
name
address
*** Failed ***
Other code
第一次失败后, .each()
循环正确停止,但是检查功能似乎一直在运行。 如何中断执行? 这是一个jsFiddle 。
function check() {
var valid = true;
$('.required').each(function() {
var input = $(this);
console.log(input.attr('id'));
if (input.val() == null || input.val() == '') {
console.log('*** Failed ***');
valid = false;
return false;
}
});
if (!valid) return false;
console.log('Other code');
return true;
}
return false
仅会破坏$.each
语句,但是该函数会继续执行下一条指令( console.log('Other code');
)。
我找到了替代解决方案。 这个想法是获取.required
输入,然后制作经典的for
循环。 这避免了each()
循环和匿名函数。
function check() {
var required = $('.required');
var size = required.size();
for (var i = 0; i < size; i++) {
var input = $(required[i]);
console.log(input.attr('id'));
if (input.val() == null || input.val() == '') {
console.log('*** Failed ***');
return false;
}
}
console.log('Other code');
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.