简体   繁体   中英

Find empty input elements inside a collection - jQuery

I am trying to find the empty input types like textbox, select and li elements inside a jQuery resultset. My resultset is (requiredfields) -

$requiredFields = $(".f-form-required.f-form-field").filter(function(){
   if($(':input:not([type="hidden"])'))
      return $(this);
  }); 

And on that resultset I want to query for empty inputs like textbox, select and li elements. But it seems I am doing something wrong. Can someone suggest me how to do that.

Currently I am doing this to get empty textboxes but not working -

 var emptyInputs = 0;
 $requiredFields.filter(function(){
  $('input[type=text]').each(function(){
       if (this.val == "") {
         emptyInputs = emptyInputs + 1;         
       } 
   }); 
}); 

I am trying to do same for finding out empty dropdown/select elements and list / li elements over $requiredFields collection.

There is no val property. Try using .val() instead or this.value :

var emptyInputs = 0;
$requiredFields.filter(function(){
    $('input[type=text]').each(function(){
        if (jQuery(this).val()  == "") {
            emptyInputs = emptyInputs + 1;         
        } 
    }); 
}); 

or:

var emptyInputs = 0;
$requiredFields.filter(function(){
    $('input[type=text]').each(function(){
        if (this.value  == "") {
            emptyInputs = emptyInputs + 1;         
        } 
    }); 
}); 

I think you arn't using .filter() quite as it is expected to be used. Consider something like this:

<html>
<body>
    <div>
       <input type="text" id="text1" class="f-form-required f-form-field" />
       <input type="text" id="text2" class="f-form-required f-form-field" value="test" />
       <input type="text" id="text3" class="f-form-required f-form-field" />
    </div>
</body>
</html>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>    
<script type="text/javascript">
    function test(){
        var $requiredFields = $('.f-form-required.f-form-field');

        var $errorFields = $requiredFields.filter(function () {
            var $this = $(this);
            return $this.is('input') && $this.val() === '';
        });
        var errorCount = $errorFields.length;

        console.log('errors:' + errorCount);
    }


    $(document).ready(function(){
        test();
    }
</script>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM