简体   繁体   中英

JS function with jquery always return undefined

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 ?

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 .

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;
}

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.

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