【问题标题】:ngTagsInput disabled input after max tag numberngTagsInput 在最大标签数后禁用输入
【发布时间】:2017-08-06 15:22:19
【问题描述】:

我有一个问题,也许有人在你的应用程序中使用了ngTagsInput

在您插入最大标签数量后,是否有禁用输入的选项?

【问题讨论】:

    标签: angularjs ng-tags-input


    【解决方案1】:

    ngTagsInput 有一个 ngModel 接受标签数组,因此您可以使用 ngDisabled 禁用输入。

    问题是如果您的输入被禁用,您将无法删除任何已经存在的标签并进一步编辑输入。我不建议这样做。

    但是你有一些选择......

    1. 验证您拥有的标签数量

    API docs 状态,max-tags 属性用于验证输入中的最大标签数量,当您超过限制时,验证状态将变为$invalid,然后您可以阻止表单提交。

    maxTags - 数量 - 如果添加的标签数量大于 maxTags,则设置 maxTags 验证错误键。

    例如:

    <tags-input ng-model="tags" max-tags="7">
      <auto-complete source="loadTags($query)"></auto-complete>
    </tags-input>
    
    1. 使用 on-tag-added 回调属性来捕捉用户何时超过允许的标签数量,并且只需删除他输入的任何新标签,而无需使用验证标志

    HTML:

    <tags-input ng-model="tags" 
        on-tag-added="onTagAdded($query, 7)"></tags-input>
    <p>Model: {{tags}}</p>
    

    控制器:

    $scope.onTagAdded = function(tag, limit) {
        if ($scope.tags.length == limit+1) {
            $scope.tags.pop();
        }
    }
    

    在上述示例中,我们将标签数量限制为 7 个。

    【讨论】:

    • 感谢您的回答,我找到了第三种方式,例如如果你想要最多 4 个标签,设置 max-tags="3" 并在无效的 css 样式中设置 display none
    • 这也会阻止标签数组增长吗?
    • 我不确定,但我认为是的
    猜你喜欢
    • 2014-12-17
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多