2015-10-17 12 views
5

Ich habe ein Array von JSON-Objekten, die in einem Formular angezeigt werden. Ich möchte die Formularvalidierung arbeiten, wo ein Benutzer mindestens ein Kontrollkästchen für das gesamte Formular auswählen muss, um gültig zu sein.Wie benötigt man mindestens 1 Checkbox für AngularJS Form Validation?

Ich weiß, dass die ng-required kann verwendet werden, aber mit der Implementierung, die ich habe, bedeutet es, dass alle von ihnen ausgewählt werden müssen, damit es gültig ist. Hier

ist der Code Ich habe bisher:

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 }, 
]; 

Alle Ideen, wie ich in der Lage sein würde, um dieses Verhalten zu erreichen?

Antwort

17

Sie können einen anderen Umfang Eigenschaft hinzufügen und array.some verwenden, um nachzusehen, ob eine der selectedtrue sind. Geben Sie dann diese Bereichseigenschaft an ng-required. Etwas wie

$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

Danke, das ist perfekt. – Actively

+0

Das funktioniert gut. Aber wie man Fehlermeldung unter den Checkboxen zeigt. Ich habe diese verwendet - '

Select any Item.
' diese Fehlermeldung funktioniert gut, aber wenn ich 'item_id' in Checkbox Name Eigenschaft angewendet. Ich habe alles überprüft, wenn ich jemanden überprüfe. Bitte hilf mir... – Chinmay235

Verwandte Themen