2015-10-17 16 views
5

フォームに表示されるJSONオブジェクトの配列があります。私はフォーム全体の有効なチェックボックスを少なくとも1つ選択しなければならないフォームの検証作業をしたいと思います。AngularJSフォーム検証に少なくとも1つのチェックボックスを必要とする方法?

私はng-requiredを使用することができますが、私の実装では、すべてが有効になるように選択する必要があることを意味します。ここで

私が持っているコードは、これまでのところです:

のindex.html:

<div ng-repeat="item in volunteerOptions"> 
    <label class="checkbox"><input type="checkbox" value="" data-ng-model="item.selected" ng-required="true">{{ item.content }}</label> 
</div> 

<button type="submit" class="btn btn-success" ng-disabled="!memberRegistrationForm.$valid">Submit</button> 

controller.js

$scope.volunteerOptions = [ 
     { content : 'Content 1', selected : false }, 
     { content : 'Content 2', selected : false }, 
     { content : 'Content 3', selected : false }, 
     { content : 'Content 4', selected : false }, 
]; 

私はことができるだろうか上の任意のアイデアこの動作を達成するには?

答えて

17

array.someを使用してselectedのいずれかがtrueであるかどうかを確認することができます。そのスコーププロパティをng-requiredに送ります。何かのように

$scope.isOptionsRequired = function(){ 
    return !$scope.volunteerOptions.some(function(options){ 
    return options.selected; 
    }); 
} 

<input type="checkbox" value="" data-ng-model="item.selected" ng-required="isOptionsRequired()"> 
+0

これは完璧です。 – Actively

+0

これは正常に動作しています。しかし、チェックボックスの下にエラーメッセージを表示する方法。このエラーメッセージは正常に動作しますが、チェックボックスのnameプロパティに 'item_id'を適用したときに'

Select any Item.
'というエラーメッセージが表示されました。私はいずれかをチェックするときに私はすべてチェックを受けた。私を助けてください... – Chinmay235

関連する問題