2016-07-26 106 views
-1

我正在构建一个JQuery函数,用Jquery检查某些输入是否为空或者不用于验证。下面是一个检查,如果输入是空的或不是函数:jQuery的JS函数总是返回undefined

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

但无论我做什么我的函数返回undefined,绝不是应该包含在验证变量的布尔值?

我应该怎么做我的函数返回true或false?

+0

你在传递什么元素? –

+3

你完全没有从功能中返回任何东西。 –

+0

你认为'验证'行正在做什么?你的逻辑也是有缺陷的。验证很可能不会做你想做的事情。 – epascarello

回答

2

如果至少有一个元素为空,则返回false,否则返回true。

function isValid(elements){ 
    var validation = true; 

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

    return validation; 
} 
+0

在'each'内返回false将作为一个突破语句 –

+0

您可能还需要添加一个trim()长度检查,否则用空格填充字段将是有效的 –

2

函数isValid()返回undefined,因为这是JavaScript中的预期行为:undefined是如果函数没有指定一个返回值的“默认”返回值,并且函数isValid()没有任何返回值。

检查this answer

2

您可以通过使用Array#some做你的代码像下面,

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

你是不是在所有返回从功能,这意味着作为默认值返回将undefined返回任何东西。