JS遍历多个input是否为空

如图:

clipboard.png
有个需求:我有点想不通怎么弄。
当所有input为空的时候点击保存弹出信息“请输入相关信息”,
当其中一个input里面有值不为空,就可以直接保存。
我的代码如下:
$(".oss-formDraft .form-group .form-control").each(function () {

        console.log($(this).val() == ''); 

});
如果input都为空,打印出来的12个true,如图:
clipboard.png
如果有一个input有值,比如第一个电话号码有值,打印出来是1个false,11个true,如图
clipboard.png

疑问:当全为空的时候,我很好判断,但是不全为空的时候 怎么判断了?谢谢各位大佬

阅读 6.7k
7 个回答

设置一个开关,一旦出现有不为空的,就为true,循环结束后,如果这个开关是true,那么就说明至少有一个不为空

let empty=true
$(".oss-formDraft .form-group .form-control").each(function () {
if($.trim($(this).val())!==""){
empty=false
}
}
if(!empty){
submit()
}

es6:

let inputs = [...$(".oss-formDraft .form-group .form-control")]
let canSave = inputs.some(item => $(item).val() != "")

如果...不支持的话,可以使用如下代码:

let inputs = Array.prototype.slice.call($(".oss-formDraft .form-group .form-control"))
let canSave = inputs.some(item => $(item).val() != "")

遍历前设置个变量

var i = 0;

为true时

i++;

最后判断i为几就代表几个为空

善用||和&&

var $controls = $(".oss-formDraft .form-group .form-control")

// hasValueCount  有值的个数
var hasValueCount = $controls.filter(function(){
    return this.value
})
if( hasValueCount == 0 ){
    // 全空
} else if( hasValueCount < $controls.length ){
    // 填了一部分
} else {
    // 全填了
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题