-1

I am building a Js function with Jquery checking if certain inputs are empty or not for validation. Here's the function that checks if the inputs are empty or not:

   function isValid(elements){
      var validation = false
      elements.each(function() {
        if ($( this ).val().length > 0){
          validation = true
        }
        else {
          validation
        }
      });
      validation
    }

however whatever I do my function returns undefined and never the boolean value that is supposed to be contained in the validation variable ?

What should I do for my function to return true or false ?

David Geismar
  • 2,758
  • 5
  • 34
  • 70

3 Answers3

2

Your function isValid() is returning undefined because this is the expected behaviour in JavaScript: undefined is the “default” returned value if a function does not specify one returned value, and your function isValid() doesn't have any return.

Check this answer.

Community
  • 1
  • 1
Gerardo Furtado
  • 95,740
  • 9
  • 109
  • 159
2

You can return false if at least one element is empty, otherwise return true.

function isValid(elements){
  var validation = true;

  elements.each(function() {
    if ($( this ).val().trim().length === 0){
      validation = false;
    }
  });

  return validation;
}
Olivier Boissé
  • 13,005
  • 5
  • 32
  • 49
2

You can do your code like below by using Array#some,

function isValid(elements) {
 return !Array.from(elements).some(function(itm){ itm.value.trim().length == 0 });
}

You are not at all returning anything from the function, that means as a default returning value undefined will be returned.

Rajaprabhu Aravindasamy
  • 64,912
  • 15
  • 96
  • 124