2013-06-20 13 views
6

Potrzebuję zastosować sprawdzanie poprawności w polu formularza tylko wtedy, gdy spełniony jest określony warunek. Że mam formę tak:Walidacja warunkowa w AngularJS

<div ng-controller="MyController"> 
<form name="myForm"> 
    <div> 
    <div class="" ng-class="{error: myForm.gender.$invalid}"> 
    Gender: 
    </div> 
    Male <input type="radio" name="gender" value="M" ng-model="survey.gender" required/> 
    Female <input type="radio" name="gender" value="F" ng-model="survey.gender" required/> 
    </div> 

    <div ng-show="survey.gender == 'F'"> 
    <div class=""> 
    Are you pregnant? 
    </div> 
    Yes <input type="radio" name="pregnant" value="Y" ng-model="survey.pregnant"/> 
    No <input type="radio" name="pregnant" value="N" ng-model="survey.pregnant"/> 
    </div> 
</form> 
</div> 

Chcę, aby na pytanie ciąży wymagane tylko wtedy, gdy użytkownik wybiera płeć żeńską. Czy Angular zapewnia jakąkolwiek weryfikację?

+0

Ostrożnie, właśnie czytałem o bitwie o opiekę nad dzieckiem w Nowym Jorku, gdzie ojciec nosił dziecko (było w ciąży). Porozmawiaj o przypadku rogu! Lub zaokrąglone, jak sądzę ... – Ben

Odpowiedz

16

Cóż, właściwie znalazłem dyrektywę, która to robi. Muszę tylko dodać ng-required="survey.gender == 'F'".

Kod wyglądałby następująco teraz:

<div ng-controller="MyController"> 
<form name="myForm"> 
    <div> 
    <div class="" ng-class="{error: myForm.gender.$invalid}"> 
    Gender: 
    </div> 
    Male <input type="radio" name="gender" value="M" ng-model="survey.gender" required/> 
    Female <input type="radio" name="gender" value="F" ng-model="survey.gender" required/> 
    </div> 

    <div ng-show="survey.gender == 'F'"> 
    <div class=""> 
    Are you pregnant? 
    </div> 
    Yes <input type="radio" name="pregnant" value="Y" ng-model="survey.pregnant" ng-required="survey.gender == 'F'"> 
    No <input type="radio" name="pregnant" value="N" ng-model="survey.pregnant" ng-required="survey.gender == 'F'"> 
    </div> 
</form> 
</div> 
+0

Witam @jacoviza, próbuję wykonać ten sam typ implementacji, np. Istnieją dwa przyciski (zapisz i prześlij), a po kliknięciu z przesłaniem istnieje potrzeba sprawdzenia poprawności pola dla tekstu pole, a nie kliknięcie przycisku Zapisz. Czy możesz podzielić się z tym pomysłem. –

3

Tak, przyjrzeć ng-required. Dokumentacja nie jest dobra, ale niektóre są w tym łączu.

Również tutaj jest question, który jest podobny do twojego, który został zadany we wcześniejszym terminie.

+0

Ahh Widzę, że znalazłeś ng-wymagane! Dobra robota. – hunt

+0

Wielkie dzięki! @polowanie – jacoviza