如果我找到第一个空文本框,我想返回false并从函数中返回
function validate(){
$('input[type=text]').each(function(){
if($(this).val() == "")
return false;
});
}
上面的代码对我不起作用:( 有人可以帮忙吗?
你正在跳出内部循环,我建议你使用特定的 "无值" 检查选择器,而不是从 内部 循环中跳出。代码如下:
function validate(){
if($('input[type=text][value=""]').length) return false;
}
或者,在循环内部设置结果,并从外部循环返回该结果:
function validate() {
var valid = true;
$('input[type=text]').each(function(){
if($(this).val() == "") //or a more complex check here
return valid = false;
});
return valid;
}
你可以像这样做:
function validate(){
var rv = true;
$('input[type=text]').each(function(){
if($(this).val() == "") {
rv = false; // Set flag
return false; // Stop iterating
}
});
return rv;
}
function validate(){
var inputs = $('input[type=text]');
var index;
while (index = inputs.length - 1; index >= 0; --index) {
if (inputs[index].value == "") { // Or $(inputs[index]).val() == "" if you prefer
return false;
}
}
// (Presumably return something here, though you weren't in your example)
}
我想在现有答案的基础上添加一些内容,以清楚说明$(selector).each
的行为,以及为什么它不会尊重OP代码中的return false
。
$(selector).each
内部的return
关键字用于中断或继续循环。如果使用return false
,相当于在for/while
循环中使用break
语句。返回非false值相当于在for
循环中使用continue
语句;它将立即跳到下一个迭代。来源
因为你返回了false,所以循环被中断,函数最终返回undefined
。你的选择是在$.each
之外使用一个变量,或者像@TJCrowder写的那样避免使用它。
each
循环完成之前,该函数返回true
是否存在任何风险? - YahyaE