检查这个数组中的值,JQuery

时间:2010-05-29 03:16:28

标签: jquery arrays

我有这个数组(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;
            }

我需要一些想法来改进最后的功能。感谢。

4 个答案:

答案 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