-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
  • 3,152
  • 6
  • 41
  • 80

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
  • 100,839
  • 9
  • 121
  • 171
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é
  • 15,834
  • 6
  • 38
  • 56
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
  • 66,513
  • 17
  • 101
  • 130