如果没有显示,则不需要如何进行角度输入

时间:2015-05-08 16:43:19

标签: angularjs

我有以下代码

<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.

所以 - 问题是我该如何处理?如果它显示我希望它是必需的,如果不明显我们不能尝试强制用户填写值。

1 个答案:

答案 0 :(得分:1)

2个解决方案:

  • 使用ng-if而不是ng-show来从表单中删除输入而不是隐藏它
  • 而不是required,只有在显示该字段的条件为true时才使用ng-required="contact.ContactType === 'LegallyMarriedSpouse' || contact.ContactType === 'Self'"。您应该将该复杂条件放在范围函数中,以避免重复它。

但是请注意,即使表单无效,它仍然可以提交,除非您在表单无效时通过禁用其提交按钮明确地阻止它。我不认为您所看到的错误与表单无效有关。

另请注意,第二种解决方案仅处理所需的字段。如果字段内的值太长或与掩码不匹配,则该字段将保持无效。所以你应该使用第一个解决方案。