需求:判断输入框中是否有值,无值就返回false,不在继续往下执行。
问题:当在jQueryf的each()方法中,return false后只是跳出本次循环,仍会继续往下执行。
出现问题的代码
var data=[];
//注意:jquery 的 each 方法中如果 return true 相当于是 continue,而 return false 相当于是 break。所以return false仍会继续往后执行
//总结:jquery 的 each 方法中的 return 实际上是不会 return 啊,在 jquery each 方法中 return false,可以借助一个外部变量来辅助实现我们想要的功能。
$("input:checkbox[name=gdId]:checked").each(function(i){
var good=[];
var id=$(this).val();
var sort=$(this).parent().parent().find("input[name='sort']").val();
var fileObj=$(this).parent().parent().find("input[type='file']")[0].files[0];
if(fileObj==null){
layer.msg("封面配图不能为空!");
return false;
}
if(sort==""){
layer.msg("请输入排序");
return false;
}
good.push({id:id,sort:sort,fileObj:fileObj})
data.push(good);
});
注意:jquery 的 each 方法中如果 return true 相当于是 continue,而 return false 相当于是 break。所以return false仍会继续往后执行
总结:jquery 的 each 方法中的 return 实际上是不会 return 啊,在 jquery each 方法中 return false,可以借助一个外部变量来辅助实现我们想要的功能。
解决后的代码
var data=[];
//注意:jquery 的 each 方法中如果 return true 相当于是 continue,而 return false 相当于是 break。所以return false仍会继续往后执行
//总结:jquery 的 each 方法中的 return 实际上是不会 return 啊,在 jquery each 方法中 return false,可以借助一个外部变量来辅助实现我们想要的功能。
var _isInvalid = false;
$("input:checkbox[name=gdId]:checked").each(function(i){
var good=[];
var id=$(this).val();
var sort=$(this).parent().parent().find("input[name='sort']").val();
var fileObj=$(this).parent().parent().find("input[type='file']")[0].files[0];
if(fileObj==null){
layer.msg("封面配图不能为空!");
flag=true;
return;
}
if(sort==""){
layer.msg("请输入排序");
flag=true;
return;
}
good.push({id:id,sort:sort,fileObj:fileObj})
data.push(good);
});
if(flag){
return false;
}
---------------------
作者:苏泼漫
来源:CSDN
原文:https://blog.csdn.net/wicher_wu/article/details/80280183
版权声明:本文为博主原创文章,转载请附上博文链接!