【发布时间】:2015-07-09 19:22:05
【问题描述】:
我有一个分成 4 个步骤的表单(我使用 ng-switch 制作了一个表单“向导”),提交按钮位于向导的最后一页。我在使角度表单验证正常工作时遇到了一些麻烦。似乎 formName.$invalid 只监视表单当前步骤的输入。
<form name="carouselForm">
<div ng-switch="modal.getCurrentStep()" class="slide-frame">
<div ng-switch-when="general" class="wave row">
....
</div>
<div ng-switch-when="carousel" class="wave row">
<div class="col-md-12">
<div class="form-group"
ng-class="">
<label for="Title">
Title <span class="red">*</span>
</label>
<div>
<input id="Title"
ng-model="entityData.Title"
type="text"
required
placeholder="" class="form-control input-md">
</div>
</div>
</div>
</div>
<div ng-switch-when="details" class="wave row">
.....
</div>
<div ng-switch-when="description" class="wave row">
.....
</div>
</div>
</form>
我删除了大部分表格,因为它会很长。在第二步中,我留下了一个带有所需标签的输入。在此步骤中,如果未设置此字段,则 carouselForm.$invalid 正确设置为 true,但一旦我更改为下一步,即使我没有填写所需的输入,carouselForm.$invalid 也会再次为 false。
似乎角度表单验证没有观察我的其他 ng-switch 块中的输入。有没有办法将它们包含在验证中?
非常感谢!
【问题讨论】:
-
元素一次只存在于一种切换条件。只能验证存在的内容
-
使用 ng-show / ng-hide 代替 ng-switch 处理向导行为会更好吗?
-
@nmod68 通过快速搜索,这似乎是实现所需行为的唯一方法。
标签: javascript angularjs forms validation