2013-06-20 4 views
6

Мне нужно применить валидацию в поле формы, только если выполнено определенное условие. Скажем, у меня есть такая форма:Условная валидация в 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> 

Я хочу сделать беременный вопрос необходимым только в том случае, если пользователь выбирает женский пол. Угловая предоставляет какие-либо подтверждения для этого?

+0

Осторожно, я просто читал о битве под стражей в Нью-Йорке, где отец нес младенца (был беременен). Поговорите об угловом футляре! Или, округленный, я полагаю ... – Ben

ответ

16

Ну, на самом деле я только что нашел директиву, которая делает это. Мне нужно только добавить ng-required="survey.gender == 'F'".

Код будет выглядеть, как это сейчас:

<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

Привет @jacoviza, я пытаюсь сделать такой же тип реализации, как, есть две кнопки (сохранить и отправить), и при нажатии кнопки submit требуется обязательная проверка поля для текста поле, а не по щелчку сохранения. Можете ли вы поделиться идеей. –

3

Да, взгляните на ng-required. Документация не хороша, но есть некоторые из них.

Также есть question, который похож на ваш, который был задан на более раннюю дату.

+0

Ahh Я вижу, что вы нашли ng-required! Хорошая работа. – hunt

+0

Спасибо большое! @hunt – jacoviza