【问题标题】:AngularJS : form validation not working on hidden inputAngularJS:表单验证不适用于隐藏输入
【发布时间】: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


【解决方案1】:

您可以将 ng-switch-when 替换为 ng-show,这样它就不会从 DOM 中删除,而是使用 CSS 隐藏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2023-03-28
    • 2016-12-13
    • 1970-01-01
    • 2013-10-07
    相关资源
    最近更新 更多