验证单选按钮AngularJS

Spe*_*cer 77 html javascript forms angularjs

这似乎应该相当容易,但我找不到答案.我有一个表单,我需要验证是否已从广播组中进行选择.我尝试在单选按钮上使用'required'属性,但是当表单被验证时,它会抱怨,除非选择了所有的单选按钮(这在设计上是不可能的).

在AngularJS中验证无线电组选择的正确方法是什么?

<form name="myForm" ng-submit="submitForm()" ng-controller="ExampleController">
  <input type="radio" ng-model="color" value="red" required>  Red <br/>
  <input type="radio" ng-model="color" value="green" required> Green <br/>
  <input type="radio" ng-model="color" value="blue" required> Blue <br/>
  <tt>color = {{color | json}}</tt><br/>
  <button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

单击Plnkr中的提交按钮可显示该行为.

http://plnkr.co/edit/3qcIbMvJk19OvokcHe2N?p=preview

dmu*_*ngs 123

尝试使用ng-required="!color".这使得只有在未设置值时才需要该字段.如果设置了值,则删除required并将通过验证.

<input type="radio" ng-model="color" value="red" ng-required="!color">  Red <br/>
<input type="radio" ng-model="color" value="green" ng-required="!color"> Green <br/>
<input type="radio" ng-model="color" value="blue" ng-required="!color"> Blue <br/>
Run Code Online (Sandbox Code Playgroud)

这是一个更新的plunker,它表明表单现在可以正确验证:http://plnkr.co/edit/EdItU2IIkO1KIsC052Xx?p = preview

更新

e-cloud的答案很简单,不需要额外的指令.我建议大家尽可能使用这种方法.在这里留下这个答案,因为它提供了一个可行的解决方案并演示了ng-required指令的使用.

  • `ng-required ="true"`也有效. (3认同)
  • `ng-required`而不是'required`就可以了.谢谢. (2认同)

e-c*_*oud 94

我认为你需要的是为无线电组添加一个名称,因为无线电输入需要一个名称来确定它属于哪个,下面的链接工作验证没有ng-required(接受的答案)

<input type="radio" name='group' ng-model="color" value="red" required>  Red <br/>
<input type="radio" name='group' ng-model="color" value="green" required> Green <br/>
<input type="radio" name='group' ng-model="color" value="blue" required> Blue <br/>
Run Code Online (Sandbox Code Playgroud)

http://plnkr.co/edit/LdgAywfC6mu7gL9SxPpC?p=preview

  • 值得注意的是,无论选择何种选项,单选按钮组都被视为有效,除非组中的至少一个单选按钮具有"ng-model"属性. (2认同)