javascript - AngularJS 验证表单数组长度

标签 javascript angularjs validation

假设我有一个具有属性 favoriteColors

的模型对象
{
    ...
    favoriteColors: ['red', 'green', 'blue']
    ....
}

我用 ng-repeat 将它们暴露给用户

<form name="userForm">
    ...
    <ul>
        <li ng-repeat="color in user.favoriteColors">
            <input type="text" ng-model="color" />
            <a href="" ng-click="delete(color)">remove</a>
        </li>
    </ul>
    <a href="" ng-click="add()">Add a new favorite color</a>
    ...
</form>

我希望能够像这样检查 favoriteColors 字段的有效性

<div ng-show="userForm.favoriteColors.$error">
    You must have at least one favorite color
</div>

使用内置验证器似乎无法做到这一点,而且我不确定我会在哪个元素上放置自定义指令以获得 ngModelController最喜欢的颜色

最佳答案

我的解决方案是添加一个隐藏的输入标签并绑定(bind)数组的长度

    <form name="userForm">
      ...
      <ul>
        <li ng-repeat="color in user.favoriteColors">
          <input type="text" ng-model="color" />
          <a href="" ng-click="delete(color)">remove</a>
        </li>
      </ul>
      <a href="" ng-click="add()">Add a new favorite color</a>
      ...

      <!-- new line -->
      <input style="display:none" name="colorsLength" type="number" min=1 value="{{user.favoriteColors.length}}"/>
    </form>

因此,您可以使用 userForm.colorsLength.$error 进行验证。 祝你好运!

关于javascript - AngularJS 验证表单数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153552/

相关文章:

javascript - AngularJs 获取从 ng-repeat 到 Javascript 变量的过滤输入?

JQuery 验证不检查所有 Bootstrap 选项卡

javascript - 多次延迟链接 jQuery .addClass 和 .removeClass

javascript - 如何编写不带参数的类型化操作

javascript - 如何使用 d3 + socket.io 进行平滑过渡

javascript - AngularJS dirPaginate 仅过滤当前页面

javascript - Angular slider 碰撞闪烁

javascript - 使用highchart在柱形图中隐藏列后如何填充空间?

python - 我在这个 django 文件上传表单中做错了什么?

ruby-on-rails - Rails before_validation 剥离空白最佳实践