我有一个myForm
带有一些输入字段的表单。
我要实现什么:每个字段required
只有在其他至少一个输入字段不为空时才有效。
我是怎么做的:我ng-required="ctrl.isAtLeasOneFieldSet()"
在每个领域都设置了。此函数检查是否设置了任何字段。直到这里它才起作用。如果我设置了一个字段,它会返回true
,如果没有设置字段,它会返回false
。我也在 Firefox 的“开发人员控制台检查器”中看到它,当我在其中一个输入字段中设置和取消设置值时,需要在真假之间进行更改。
什么不起作用:我在我的控制器中有一个提交功能:
function submitForm(valid) {
if(!valid) {
return;
}
}
并在表格上ng-submit="ctrl.submitForm(ctrl.myForm.$valid)"
。即使ng-required
设置为true
并且未设置输入字段,valid
in也会submitForm
返回true
。我已经用这种技术数千次了,ng-required="someValue"
但没有像现在这样的功能,它工作得很好。我认为当我设置时有ng-required
问题ctrl.isAtLeasOneFieldSet()
。看起来表单不会更新到required
.
这里有一个模拟:
index.html - 表单
<form name="ctrl.myForm" class="form-horizontal" role="form" data-ng-submit="ctrl.submitForm(ctrl.myForm.$valid)" novalidate>
<input name="name"
data-ng-model="data.name"
data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
/>
<input name="surname"
data-ng-model="data.surname"
data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
/>
<!---->
</form>
index.js - 提交表单()
function submitForm(valid) {
if(!valid) {
return;
}
// Do something else
}