2016-07-26 133 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返回任何東西。