我在Stackoverflow上尝试了很多答案,但没有一个能正常工作:
<form ng-submit="runIt(cars)">
<input type="radio" ng-model="cars.erp" value="Toyota" ng-required="!cars.erp">Toyota
<br>
<input type="radio" ng-model="cars.erp" value="Nissan" ng-required="!cars.erp">Nissan
<br>
<input type="radio" ng-model="cars.erp" value="Honda" ng-required="!cars.erp">Honda
<br>
<input type="radio" ng-model="cars.erp" value="Other" ng-required="!cars.erp">Other
<input type="text" ng-model="cars.other" ng-show="cars.erp=='Other'" ng-required="!cars.other">
<br>
<input type="submit">
</form>
只有在Other
中键入值后,才会开始工作。显然,这是由于隐藏的输入,但这是它应该如何工作:
这里是小提琴:http://jsfiddle.net/ADukg/17426/
重现:
答案 0 :(得分:1)
您的文字字段ng-model
为cars.other
,然后您正在检查ng-required="!cars.other"
哪个不对。你需要自己的文本字段。相反,它应该取决于单选按钮的值。类似于ng-required="cars.erp=='Other'"
。
我在这里更新了JSFiddle - &gt; http://jsfiddle.net/d0o29hb2/3/。希望这可以帮助。
答案 1 :(得分:1)
您获得“具有name ='的无效表单控件不可聚焦”的特定错误的原因是因为浏览器希望关注所需的表单元素(文本输入),但元素不可见。
<input type="text" ng-model="cars.other" ng-show="cars.erp=='Other'" ng-required="!cars.other">
你说只有在cars.other评估为false时才需要文本字段。换句话说,无论何时填写文本字段都是必需的。如果cars.erp设置为other,则实际需要的是文本字段。
<input type="text" ng-model="cars.other" ng-show="cars.erp=='Other'" ng-required="cars.erp=='Other'">