代码之家  ›  专栏  ›  技术社区  ›  Felix

正在检查此数组中的值,jquery

  •  1
  • Felix  · 技术社区  · 16 年前

    我有一个数组(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 回复  |  直到 16 年前
        1
  •  1
  •   karim79    16 年前

    您可以将该函数替换为:

    function checkingFieldsArentEmpty(){
        return !(allFields.filter(":input[value]").length != allFields.filter(":input").length);
    }
    
        2
  •  2
  •   cletus    16 年前

    尝试:

    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对象?

        3
  •  1
  •   Felix Kling    16 年前

    你可以使用 .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创建和填充数组对我来说似乎是不必要的。

        4
  •  1
  •   x1a4    16 年前

    hasEmptyFields = !!$.grep(allFields, function(a) { return a.val() === null; }).length