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

Vue-Select如何强制所有输入的标签条目转为小写格式保存

vue-select 强制输入标签转为小写实现方案

问题说明

使用taggable模式的vue-select组件时,输入带大写字符的文本(例如Baseball),生成的标签会原样保留输入格式存储,需要实现所有新建标签自动转为小写格式存储,例如输入Baseball最终存储值为baseball。

可复现问题的在线环境

原始复现代码

<template>
  <div id="app">
    <h3>Vue Select</h3>
    <v-select
      v-model="selected"
      taggable
      multiple
      :options="options"
      @input="setSelected"
    ></v-select>
    <br /><br />
    selected: <br />
    <pre>{{ selected }}</pre>
  </div>
</template>

<script>
import vSelect from 'vue-select';
import 'vue-select/dist/vue-select.css';
export default {
  name: 'App',
  components: {
    'v-select': vSelect,
  },
  data() {
    return {
      selected: null,
      options: [],
    };
  },
  methods: {
    setSelected(value) {
      console.log(value);
    },
  },
};
</script>

实现方法

直接使用组件提供的createOption属性自定义新建标签的生成逻辑,在标签创建环节就完成小写转换,不需要额外监听输入事件做二次处理,不会出现原值闪回的问题。

修改后代码

<template>
  <div id="app">
    <h3>Vue Select</h3>
    <v-select
      v-model="selected"
      taggable
      multiple
      :options="options"
      :create-option="createCustomOption"
    ></v-select>
    <br /><br />
    selected: <br />
    <pre>{{ selected }}</pre>
  </div>
</template>

<script>
import vSelect from 'vue-select';
import 'vue-select/dist/vue-select.css';
export default {
  name: 'App',
  components: {
    'v-select': vSelect,
  },
  data() {
    return {
      selected: null,
      options: [],
    };
  },
  methods: {
    createCustomOption(inputValue) {
      // 去除首尾空格后统一转小写
      return inputValue.trim().toLowerCase();
    }
  },
};
</script>

补充说明

  • 逻辑中增加了trim()处理,可自动过滤输入内容首尾的无效空白字符
  • 转换后的值和已有选项格式完全统一,组件自带的去重逻辑会自动拦截大小写不同但内容一致的重复标签,不需要额外写去重判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:21:28