2016-07-26 3 views
-1

Я строю Js-функцию с проверкой Jquery, если определенные входы пусты или нет для проверки. Вот функция, которая проверяет, является ли входы пусты или нет:Функция JS с jquery всегда возвращает undefined

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

однако все, что я моя функция не возвращает неопределенное значение и никогда не логическое значение, которое, как предполагается, содержится в переменной проверки?

Что мне делать, чтобы моя функция вернула true или false?

+0

Что вы переходите на элементы? –

+3

Вы ничего не возвращаете из функции. –

+0

Как вы думаете, что делают строки 'validation'? Ваша логика также ошибочна. Валидация, скорее всего, не делает то, что вы хотите. – epascarello

ответ

2

Вы можете вернуть false, если хотя бы один элемент пуст, иначе верните true.

function isValid(elements){ 
    var validation = true; 

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

    return validation; 
} 
+0

return false внутри 'each' будет действовать как оператор break –

+0

Вы также можете добавить' trim() 'в проверка длины, в противном случае заполнение поля пробелами было бы действительным –

2

Функция isValid() возвращает неопределенные значения, поскольку это ожидаемое поведение в JavaScript: undefined - это возвращаемое значение по умолчанию, если функция не указывает одно возвращаемое значение, а ваша функция isValid() не имеет никакого возврата.

Проверить this answer.

2

Вы можете сделать свой код, как показано ниже, используя Array#some,

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

Вы вообще не возвращаетесь ничего из функции, это означает, что по умолчанию возвращаемого значения undefined будет возвращена.