Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 选择至少一个验证复选框_Angularjs_Node.js_Mean Stack_Mean.io - Fatal编程技术网

Angularjs 选择至少一个验证复选框

Angularjs 选择至少一个验证复选框,angularjs,node.js,mean-stack,mean.io,Angularjs,Node.js,Mean Stack,Mean.io,我有一组复选框,我想从中选择至少一个复选框,并显示验证错误 我该怎么做?这是我的密码 <div class="form-group" ng-class="{ 'has-error' : submitted && form.field.$invalid }"> <div class="col-md-12"><label for="field" >Select at leat one</label></div>

我有一组复选框,我想从中选择至少一个复选框,并显示验证错误

我该怎么做?这是我的密码

<div class="form-group" ng-class="{ 'has-error' : submitted && form.field.$invalid }">
    <div class="col-md-12"><label for="field" >Select at leat one</label></div>
        <div class="col-md-2" data-ng-repeat="i in [1,2,3,4]">
          <label><input type="checkbox" name="field[$index]" value="{{i}}" data-ng-model="form.field[$index]" required/>Choice {{i+1}}</label>
        </div>
        <div ng-show="submitted && form.field.$invalid" class="help-block">
          <p ng-show="form.field.$error.required">Please select at least one choice<p>
        </div>
    </div>
</div>

一点一点地选择
选择{{i+1}
请至少选择一个选项

您可以使用本机javascript函数迭代数组。首先想到的是和

使用some,您可以确定数组中的一项是否验证为真,使用过滤器可以找到通过自定义表达式的所有元素,并检查新创建的数组是否具有特定长度

例如:


您可以根据验证结果标记显示错误的变量。可以找到一个工作演示。

您可以正确创建复选框列表对象数组,然后绑定它。请找到


{{chk.group}}
{{vale.label} 从{{chk.group}中至少选择一个选项


我对您的要求不是很确定,所以我花了点时间,使用了过滤器和一些函数来验证至少一个复选框。谢谢@skubski请发布一些描述作为答案,这样我可以接受你的答案。添加了它,谢谢@道
var atleastOne = this.form.field.some(function(element) {
    return element;
 });

 if(atleastOne) {
   window.alert("validated with some");
 } 

 var filtered = this.form.field.filter(function(element) {
    if(element) { return element; }
 });

 if(filtered.length > 0) {
    window.alert('validated with filter');
 } 
<div ng-controller="ChckbxsCtrl">
<div ng-repeat="chk in items">
    <div style="width:500px;height:100px;border:1px solid #000;">
         <B>{{chk.group}}</B><br>
    <label ng-repeat="vale in chk.values">
    <input type="checkbox" ng-model="vale.val" />
    {{vale.label}}</label>
         </div>
     <span ng-show="chk.isValid">Select at least one option from {{chk.group}}</span>
        </br> </div>
</br>