使用AngularJS,我想建立一个验证规则,其中必须至少检查2个复选框才能使输入有效。我试过这个:
<div ng-repeat="item in items">
<label><input type="checkbox" ng-model="checked[item.id]" ng-required="!isChecked" />
<span>{{item.title}}</span></label>
</div>
和
// checkbox validation
angular.module('app', []).
run(function($rootScope) {
$rootScope.items = [
{ id: 1, title: 'Certified Plumber' },
{ id: 2, title: 'Carpentry Experience' },
{ id: 3, title: 'Certified Electrician' },
{ id: 4, title: 'Bartending Experience' },
{ id: 5, title: 'Food Hygiene Certificate' },
{ id: 6, title: 'First Aid Course' },
{ id: 7, title: 'Forklift Drive Certificate' },
{ id: 8, title: "Driver's License (Type B)" }
];
$rootScope.checked = {};
$rootScope.isChecked = false;
$rootScope.$watch('checked', function(selected) {
$rootScope.isChecked = false;
angular.forEach(selected, function(isChecked) {
if (isChecked) $rootScope.isChecked = true;
});
}, true);
});
现在,当选中至少一个复选框时,验证工作正常。如何为至少两个复选框自定义它?
答案 0 :(得分:1)
如下:
$rootScope.isChecked = false;
$rootScope.$watch('checked', function(selected) {
$rootScope.isChecked = false;
$rootScope.checkedCounter = 0;
angular.forEach(selected, function(isChecked) {
if (isChecked) $rootScope.checkedCounter = $rootScope.checkedCounter + 1;
if($rootScope.checkedCounter >= 2) $rootScope.isChecked = true;
});
}, true);