2013-06-20 101 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> 

我想使只有當用戶選擇女性性別時需要懷孕的問題。 Angular會爲此提供任何類型的驗證嗎?

+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,我試圖做同樣類型的實現,有兩個按鈕(保存並提交),並點擊提交需要對文本進行必要的字段驗證框,而不是點擊保存。你可以分享一些想法。 –

3

是的,看看ng-required。文檔不好,但有一些鏈接。

此處還有一個question,與您在較早時問的您的類似。

+0

啊,我看到你發現ng-required!好工作。 – hunt

+0

非常感謝! @打獵 – jacoviza