-3

我想检查所有带有“textinput”类的文本输入是否为空,但它似乎只检查第一个输入是否为空,我不知道为什么。谁能看到我做错了什么?

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

6 回答 6

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');
于 2013-03-10T20:09:46.203 回答
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');   
  }
});
于 2013-03-10T20:06:20.897 回答
1

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

$('#check').click(function () {
    var allEmpty;
    $('.textinput').each(function () {
        if (!$(this).val()) {
            allEmpty = true;
        }
    });
    if (allEmpty == true) {
        alert('all empty');
    }
});
于 2013-03-10T20:07:04.390 回答
1

这应该是你的条件>>

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

}else {
  allEmpty = true;
}
于 2013-03-10T20:07:44.110 回答
1

你的情况不对;您正在为每个项目设置 allEmpty = true。你必须颠倒你的逻辑:

$('#check').click(function(){
    var almostOneNotEmpty = false;
       $('.textinput').each(function(){
     if($(this).val()){
       almostOneNotEmpty = true;
     }
   });
     if (!almostOneNotEmpty == true){
        alert('all empty');   
     }
});
于 2013-03-10T20:08:29.803 回答
1

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

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

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

于 2013-03-10T20:11:34.997 回答