我有以下代码
<div class="form-group" show-errors ng-show="contact.ContactType === 'LegallyMarriedSpouse' || contact.ContactType === 'Self'">
<label class="control-label">Social Security Number</label>
<input type="text" class="form-control" ng-model="contact.SSN" ui-mask="999-99-9999" name="SSN" maxlength="50" required />
</div>
我原以为Angular会确保不再需要隐藏字段,但事实并非如此。虽然用户无法看到它,但显然仍然停止提交表单,因为我在控制台中看到以下错误。
An invalid form control with name='SSN' is not focusable.
所以 - 问题是我该如何处理?如果它显示我希望它是必需的,如果不明显我们不能尝试强制用户填写值。
答案 0 :(得分:1)
2个解决方案:
required
,只有在显示该字段的条件为true时才使用ng-required="contact.ContactType === 'LegallyMarriedSpouse' || contact.ContactType === 'Self'"
。您应该将该复杂条件放在范围函数中,以避免重复它。但是请注意,即使表单无效,它仍然可以提交,除非您在表单无效时通过禁用其提交按钮明确地阻止它。我不认为您所看到的错误与表单无效有关。
另请注意,第二种解决方案仅处理所需的字段。如果字段内的值太长或与掩码不匹配,则该字段将保持无效。所以你应该使用第一个解决方案。