检查所有文本输入是否为空

时间:2013-03-10 20:02:10

标签: javascript jquery html

我想检查所有带有'textinput'类的文本输入是否为空,但它似乎只检查第一个输入是否为空,我无法弄清楚原因。谁能看到我做错了什么?

$('#check').click(function(){
    var allEmpty;
       $('.textinput').each(function(){
     if(!$('.textinput').val()){
       allEmpty = true;
     }
   });
     if (allEmpty == true){
        alert('all empty');   
     }
});

6 个答案:

答案 0 :(得分:3)

找到非空的所有.textinput,并检查选择器长度。如果不存在,则它们都是空的:

$('#check').on('click', function(){
    var allEmpty = ! $('.textinput').filter(function() {
                       return $.trim( this.value ) != "";
                   }).length;

    if (allEmpty) alert('all empty');   
});

if ( ! $('.textinput[value !=""]').length ) alert('all empty');

答案 1 :(得分:2)

尝试检查相反的逻辑。如果设置了任何值,则它们not全部为空。

此外,当您处于$(this)函数的上下文中时,您希望使用.each()。否则,调用$('.textinput')将再次重新选择这些元素,而不是处理当前元素。

添加$.trim()可确保空格不计为实际值,但如果要将空格计为值,则可以将其删除。

$('#check').click(function() {
  var allEmpty = true;
  $('.textinput').each(function(){
    if ($.trim($(this).val())) {
      allEmpty = false;
    }
  });
  if (allEmpty == true){
    alert('all empty');   
  }
});

答案 2 :(得分:1)

您需要使用“this”来使用每种方法选择的元素。

$('#check').click(function () {
    var allEmpty;
    $('.textinput').each(function () {
        if (!$(this).val()) {
            allEmpty = true;
        }
    });
    if (allEmpty == true) {
        alert('all empty');
    }
});

答案 3 :(得分:1)

这应该是你的条件>>

if(!$('.textinput').val()){

}else {
  allEmpty = true;
}

答案 4 :(得分:1)

你的病情错了;您为每个项目设置allEmpty = true。 你必须颠倒你的逻辑:

$('#check').click(function(){
    var almostOneNotEmpty = false;
       $('.textinput').each(function(){
     if($(this).val()){
       almostOneNotEmpty = true;
     }
   });
     if (!almostOneNotEmpty == true){
        alert('all empty');   
     }
});

答案 5 :(得分:1)

这个简单的检查会告诉你它们是否都是空的:

var isEmpty = !$('.textinput').map(function() { return this.value; }).get().join('');

如果所有字段都为空,这将为您提供布尔值true