You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Codepen来源的标签输入组件实现最多输入5个标签的限制

标签输入组件限制最多5个标签的实现方案

核心修改点

只需要调整addTag方法的校验逻辑,再优化批量输入场景的边界处理即可,修改后完整代码如下:

function tagSelect() {
  return {
    open: false,
    textInput: '',
    tags: [],
    init() {
      this.tags = JSON.parse(this.$el.parentNode.getAttribute('data-tags'));
    },
    addTag(tag) {
      tag = tag.trim()
      // 新增长度判断:标签数量小于5、非空、不存在重复才允许新增
      if (tag != "" && !this.hasTag(tag) && this.tags.length < 5) {
        this.tags.push( tag )
      }
      this.clearSearch()
      this.$refs.textInput.focus()
      this.fireTagsUpdateEvent()
    },
    fireTagsUpdateEvent() {
      this.$el.dispatchEvent(new CustomEvent('tags-update', {
        detail: { tags: this.tags },
        bubbles: true,
      }));
    },
    hasTag(tag) {
      var tag = this.tags.find(e => {
        return e.toLowerCase() === tag.toLowerCase()
      })
      return tag != undefined
    },
    removeTag(index) {
      this.tags.splice(index, 1)
      this.fireTagsUpdateEvent()
    },
    search(q) {
      if ( q.includes(",") ) {
        q.split(",").forEach(function(val) {
          this.addTag(val)
        }, this)
      }
      this.toggleSearch()
    },
    clearSearch() {
      this.textInput = ''
      this.toggleSearch()
    },
    toggleSearch() {
      // 可选优化:标签数量满5个时自动关闭搜索框,禁止继续输入
      this.open = this.textInput != '' && this.tags.length < 5
    }
  }
}

可选调整说明

  • 上述toggleSearch方法新增的长度判断如果不需要可以删除,删掉后标签满5个时输入框仍会显示,但不会新增标签
  • 批量输入逗号分隔的多个标签时,会自动按顺序添加有效标签直到凑满5个,超出部分自动忽略,符合常规交互逻辑

内容的提问来源于stack exchange,提问作者shadi ahmadian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:24:05