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

Vuetify 3+ v-select搜索时自动选中问题求助

Vuetify 3自定义搜索v-select自动选中问题修复

问题

在Vuetify 3+中为v-select添加自定义搜索框后,输入关键词筛选选项时,组件会自动选中匹配的结果项,而非仅在手动点击复选框时触发选中操作。

修复方案

1. 添加no-auto-select属性

给v-select组件添加no-auto-select属性,这是Vuetify原生提供的配置,用于禁用菜单打开或选项更新时的自动选中行为。

修改后的v-select核心代码

<v-select
      :item-title="itemTitle"
      :item-value="itemValue"
      :items="filteredItems"
      :loading="!disabled ? loading : false"
      :menu-props="menuProps"
      :model-value="modelValue"
      :name="name"
      :placeholder="placeholder"
      :prepend-inner-icon="icon"
      :readonly="disabled"
      :required="required"
      :return-object="returnObject"
      :rules="rules"
      attach
      width="220px"
      class="custom-menu-select"
      dense
      density="compact"
      hide-details
      no-auto-select <!-- 新增属性,禁用自动选中 -->
      @update:model-value="updateModelValue"
      @update:menu="updateMenu"
>
  <!-- 原有插槽内容保持不变 -->
</v-select>

2. 保留现有筛选逻辑

你的filteredItems计算属性已经通过数组克隆避免了修改原props数据,这部分无需调整,继续使用即可:

const filteredItems = computed(() => {
  const clonedItems = [...props.items]
  if (!props.enableSearch) return clonedItems
  if (props.serverSearch) return localItems.value
  if (!searchQuery.value) return clonedItems
  return clonedItems.filter((item) =>
    item[props.itemTitle].toLowerCase().includes(searchQuery.value.toLowerCase())
  )
})

原理

no-auto-select属性会阻止v-select在选项列表更新(比如搜索筛选后)时自动匹配并选中项,确保只有用户手动点击选项时才会触发model-value的更新,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:31:01