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