【问题标题】:AngularJS validation for ng-repeat form itemsng-repeat 表单项的 AngularJS 验证
【发布时间】:2015-08-28 03:49:36
【问题描述】:

我正在寻找一些指导。

这是我的一些代码:

<div ng-repeat="q in questions">
    <div class="panel panel-info">
        <div class="panel-heading">
            <h3 class="panel-title"><span ng-bind="q.questionText"></span></h3>
        </div>
        <div class="panel-body">
            <answer-field question="q"></answer-field>
        </div>
    </div>
</div>

answer-field 是一个指令,本质上取决于q 是什么类型的表单字段将显示为select 框或input text 框等。

例如,选择框可能是:

<div class='form-group'>
    <select class='form-control' ng-model='question.answer' ng-options='item for item in question.choices' required>
        <option value=''>Select an option...</option>
    </select>
</div>

文本字段可能是:

<div class='form-group'>
    <input class='form-control' type='text' ng-model='question.answer' required />
</div>

如您所见,我添加了required,这在技术上确实有效。如果我尝试提交,浏览器会显示一个错误,提示我需要填写该字段。

我想要的是更美观一些的东西。例如,Bootstrap 有 has-error。如果我可以让form-group 显示has-error 而不是默认浏览器“填写此字段”消息,那就太好了 - 理想情况下在某处显示确实有错误的项目列表。

我该怎么办?

【问题讨论】:

    标签: javascript angularjs forms twitter-bootstrap validation


    【解决方案1】:

    Angular has novalidate。它抑制了原生 HTML 验证,允许您放入自己的验证。至于如何显示自定义错误,也在那个页面中。

    【讨论】:

    • 如果我理解正确,ng-invalid 将应用于无效的表单字段?如果这是正确的,我怎样才能在表单组上显示has-error
    【解决方案2】:

    我经常喜欢如下显示自定义错误消息:

      <div class="form-group">
        <label for="inputPassword" class="control-label">Password</label>
        <input type="password" id="inputPassword" name="password" class="form-control" ng-model="user.password" placeholder="Password" required>
      </div>
    
      <div class="form-group has-error">
        <p class="help-block" ng-show="form.password.$error.required && submitted">
           Please enter password.
        </p>
      </div>
    

    或者您可以使用ng-class 根据表达式将has-error 类附加到第一个div

    【讨论】:

    • 我正在使用 ng-repeat - 所以我的输入字段没有 name 属性。我很想以您描述的方式显示它,但我只是不知道如何做相当于ng-show="form.password.$error.required &amp;&amp; submitted" 的方法,因为我的每个表单字段都没有类似名称的密码。
    猜你喜欢
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2016-04-22
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    相关资源
    最近更新 更多