如何确定表单中至少有一个字段是否为空?

时间:2016-02-15 12:51:32

标签: javascript html angularjs

大家好,我遇到了问题。我有大的形式,没有必填字段。但在我提交之前,我需要检查是否有空字段。所以我决定使用object来完成这项任务。

$scope.formData = {
  foo: "",
  bar: "",
  some: ""
};

我试着像这样使用smth

function hasEmptyProperty (obj) {
  for(var key in obj) {
    if(obj.hasOwnProperty(key))
      if (obj[key].length > 0)
        return false;
    }
  return true;
}

但执行后,函数可能会返回false,然后返回true,然后返回false。

所以我的问题是。我如何检查对象中至少有一个属性值是否为空?

1 个答案:

答案 0 :(得分:1)

对于此问题,您需要更改逻辑:

function hasEmptyProperty(obj) {
    for (var key in obj) {
        if (obj.hasOwnProperty(key))
            if (obj[key].length === 0) // empty vs content
                return true;           // true vs false and short circuit
    }
    return false;                      // false vs true
}

但我建议使用Array#some()

  

some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。

function hasEmptyProperty(obj) {
    return Object.keys(obj).some(function (key) {
        return !obj[key].length;
    });
}

var $scope = {};

$scope.formData = {
    foo: "",
    bar: "",
    some: ""
};

document.write('<pre>' + JSON.stringify(hasEmptyProperty($scope.formData), 0, 4) + '</pre>');