Angula.JS:复选框数组验证



我在表单中有一组复选框。当至少选中其中一个时,如何验证表单?

<div class="col-lg-9 col-md-9 col-sm-9 col-xs-9" ng-init="row.user_input = {}">
    <div ng-repeat="value in row.allowed_values" class="checkbox-inline">
        <input type="checkbox"
               name="{{row.field}}"
               value="{{value}}"
               ng-model="row.user_input[value]"
               ng-required="{{row.mandatory_field && !someSelected(row.user_input)}}">{{value | capitalize}}
    </div>
</div>

这里有一大堆细节。

看看这个工作 plunkr: https://plnkr.co/edit/5H73o70p4ONz4jxGiY4e?p=preview

  $scope.input={
    values: {
      'a': false,
      'b': false,
      'c': false
    }
  };
  $scope.someSelected = function(values) {
    for(var value in values) {
      if(values[value]) {
         return true;
      }
    }
    return false;
  }

您可以将用户输入另存为对象而不是数组,以检查是否至少选中了一个。在视图中:

<form name="checkboxTest">
    <div ng-repeat="(key,value) in input.values">
        <input type="checkbox"
           name="checkbox"
           value="{{value}}"
           ng-model="input.values[key]"
           ng-required="!someSelected(input.values)">
        {{key}}
    </div>
    <pre>
    {{input}}
    </pre>
    <button type="submit" ng-disabled="!checkboxTest.$valid">Submit</button>
</form>

最新更新