我有这个数组(JQuery),我添加了所有表单的控件,它看起来像:
var name = $("#name"),
surname = $("#surname"),
address = $("#address"),
phone = $("#phone"),
photo = $("#photo"),
grade = $("#grade"),
profession = $("#profession"),
email = $('#email'),
title = $('#title'),
allFields = $([]).add(name)
.add(surname)
.add(address)
.add(phone)
.add(photo)
.add(grade)
.add(profession)
.add(email)
.add(title)
.add(grade);
我想用
检查每个元素的值到'allFields'数组中function checkingFieldsArentEmpty(){
for (var f in allFields){
if(f.val() === null)
//if any val is null just return false
return false;
}
return true;
}
我需要一些想法来改进最后的功能。感谢。
答案 0 :(得分:2)
尝试:
var names = ["name", "surname", "address", "phone", "photo",
"grade", "profession", "title"];
var allFields = {}
$.each(names, function(i, name) {
allFields[name] = $("#" + name).val();
});
然后你可以这样做:
if (allFields.name) { // true if it has a value, false for ""
...
}
你这样做的方式有点令人费解。你想要一个数组或一个jQuery对象吗?
答案 1 :(得分:1)
您可以用以下内容替换该功能:
function checkingFieldsArentEmpty(){
return !(allFields.filter(":input[value]").length != allFields.filter(":input").length);
}
答案 2 :(得分:1)
您可以使用.reduce()
:
function checkingFieldsArentEmpty(){
return allFields.reduce(function(prev, curr, index, array) {
// for checking for emptiness just add && cur.val() !== ""
return prev && curr.val() !== null;
}, true);
}
顺便说一下。使用jQuery来创建和填充数组对我来说似乎没什么用。
答案 3 :(得分:1)
hasEmptyFields = !!$.grep(allFields, function(a) { return a.val() === null; }).length