【问题标题】:How to find out whether at-least one field in a form is empty?如何找出表单中的至少一个字段是否为空?
【发布时间】:2016-02-15 21:37:33
【问题描述】:

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

$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。

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

【问题讨论】:

    标签: javascript html angularjs


    【解决方案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>');

    【讨论】:

    • 不需要hasOwnProperty - .keys 只返回自己的道具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2012-08-18
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多