需求:判斷輸入框中是否有值,無值就返回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
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!