2017-05-13 107 views
0

我正在嘗試檢查至少有一個輸入是否有值。下面的代碼目前正在檢查是否所有輸入都有一個值,我只需檢查數組中是否有一個值。檢查數組中是否有至少一個輸入值使用jQuery/Javascript

var returnValue = true; 
var listOfInputs = [ 
    $("#entry_bg"), 
    $("#entry_carbs"), 
    $("#entry_bolus"), 
    $("#entry_correction"), 
    $("#entry_food"), 
    $("#entry_notes") 
]; 


listOfInputs.forEach(function(e) { 
    if (!e.val()) { 
     returnValue = false; 
    } 
}); 

if (!returnValue) { 
    return false; 
} 

我該怎麼做才能做到這一點?任何幫助將是偉大的,謝謝!

回答

0

看來,最簡單的解決辦法是隻檢查一個具有值並設置爲returnValue = true的元素。

var returnValue = false; 
var listOfInputs = [ 
    $("#entry_bg"), 
    $("#entry_carbs"), 
    $("#entry_bolus"), 
    $("#entry_correction"), 
    $("#entry_food"), 
    $("#entry_notes") 
]; 

listOfInputs.forEach(function(e) { 
    if (e.val()) { 
     returnValue = true; 
    } 
}); 

if (!returnValue) { 
    openErrorModal(".entry_submit", "Add Entry", "You must fill out at least one input in order to add an entry.", "#entry_modal"); 
    return false; 
} 
+1

這可以工作,但效率不高,因爲'forEach'仍然繼續迭代數組的其餘部分,即使已經找到了非空輸入,這也是沒用的。 '.some'的優點是隻要回調函數返回一個真值,它就會退出,並且它返回感興趣的布爾值。 – trincot

2

您可以使用Array#some

return listOfInputs.some(function(e) { 
    return e.val() != ''; 
}); 
+0

請注意,5個月後您未接受此答案。有什麼問題嗎? – trincot

1

您應該檢查Array.protoype.some

some()一旦執行回調函數對於每個存在於陣列中元件,直到它找到一個其中回調返回truthy值

const hasAtLeastOneValue = listOfInputs.some(input => !!input.val()); 
相關問題