2013-06-20 4 views
6

Devo applicare una convalida su un campo modulo solo se sono soddisfatte determinate condizioni. Dire che ho una forma come questa:Convalida condizionale in 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> 

Voglio rendere la domanda incinta richiesta solo se l'utente sceglie il sesso femminile. Angular fornisce qualsiasi tipo di convalida per questo?

+0

Attento, stavo leggendo di una battaglia per la custodia a New York dove il padre aveva portato il bambino (era incinta). Parla di un caso d'angolo! Oppure, arrotondato, suppongo ... – Ben

risposta

16

Beh, in realtà ho appena trovato la direttiva che lo fa. Devo solo aggiungere ng-required="survey.gender == 'F'".

Il codice sarebbe simile a questa società:

<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

Ciao @jacoviza, sto provando a fare lo stesso tipo di implementazione come, ci sono due pulsanti (salva e invia), e al clic di invio c'è bisogno della convalida del campo richiesta per un testo box, non al click di salvataggio. Puoi condividere qualche idea per questo. –

3

Sì, un'occhiata a ng-required. La documentazione non è buona, ma ce ne sono alcuni a questo link.

Anche qui è un question simile al tuo che è stato chiesto in una data precedente.

+0

Ah, vedo che hai trovato ng-required! Buon lavoro. – hunt

+0

Grazie mille! @caccia – jacoviza