取消选中 n 后限制取消选中复选框 - Angularjs

Restricting unchecking checkboxes after n are unchecked - Angularjs

如果至少三个未选中,我想限制用户取消选中复选框。如果已经取消选中任何三个复选框,他将无法再取消选中。

这是代码。

http://jsbin.com/corecetepa/1/edit

你可以这样做,

<label ng-repeat="option in permissions.headers"> 
      <input ng-click="checkPermission()" type="checkbox" 
      ng-model="option.selected" 
      ng-checked="option.selected"> 
      {{  option.title  }}
    </label>

  $scope.checkPermission=function(option){
      var lengthTemp=($filter('filter')($scope.permissions.headers,{'selected':true})).length;
       if(lengthTemp<3) {         
            option.selected=!option.selected;
       }     
    };
}

$filter('filter')($scope.permissions.headers,{'selected':true})).length 将过滤那些选项permissions.headers 选中了哪个复选框。

希望这就是您要找的。

你可以这样做

<input ng-change="!option.selected && permissions.headers | filter: {selected: true}).length<=3 && option.selected= true" type="checkbox" 
ng-model="option.selected" 
ng-checked="option.selected"/> 
{{  option.title  }}

您可以将相同的逻辑移动到控制器方法。

标记

ng-change="changeCheckbox(option)

控制器

$scope.changeCheckbox  = function (option)
{
    if(!option.selected && $scope.$eval('permissions.headers | filter: {selected: true}).length<=3'))
       option.selected = false;
}