[问题描述]
前台提交数据验证时,要求页面上的所有select必须选择,有一个未选择就页面提示。使用 js each循环return false
,并没有结束所有循环。。。
jQuery(':checkbox[name="prd_itm[]"]:checked').each(function(){
if(jQuery(this).closest('tr').find('input[name="prd_itm_cd"]').val() == ''){
alert('属性未选择');
return false;
}
});
[解决方案]
var _isInvalid = false;
jQuery(':checkbox[name="prd_itm[]"]:checked').each(function(){
if(jQuery(this).closest('tr').find('input[name="prd_itm_cd"]').val() == ''){
alert('属性未选择');
_isInvalid = true;
return false;
}
});
if (_isInvalid) {
return false;
}
[知识点]
- JQuery each循环,要实现break和continue的功能
break ----用return false;
continue --用return ture;- JQuery怎么跳出当前的each循环
API 上的说明只有跳出整个循环(如果需要退出 each 循环可使回调函数返回 false,其它返回值将被忽略。)
return false;——跳出所有循环;相当于 javascript 中的 break 效果。
return true;——跳出当前循环,进入下一个循环;相当于 javascript 中的 continue 效果
jquery是对象链,所以$(…).each()返回的还是对象集合。each(function(){}):是回调函数,在回调函数里不能返回结果到回调函数each外面。
参考文章:
https://www.jb51.net/article/64213.htm JQuery跳出each循环的方法