Skip to content

AutoComplete 自动完成

输入框 + 浮层下拉建议项。区别于 Select:值可以是任意字符串(不限于选项),适合做地址、邮箱、商品名、关键词等"补全"场景。

基本使用

v-model 绑定输入值,options 提供候选项。options 可以是 string[]{ value, label, disabled? }[]

自定义选项格式

提供 { value, label, disabled } 形态可以独立控制 value 和显示文本,并禁用某项。

过滤逻辑

filter-option 控制候选项过滤:

  • true(默认):按 label 包含输入内容(不区分大小写)
  • false:不过滤,全量展示
  • function:自定义过滤函数 (input, option) => boolean

大小写敏感

case-sensitive=true 让默认过滤区分大小写。

键盘导航

打开浮层后:

  • 在候选项间移动焦点(自动跳过 disabled 项,到末尾循环回首项)
  • Enter 选中当前焦点项
  • Esc 关闭浮层
  • 输入字符任意时刻打开浮层

三种尺寸

表单联动

放进 c-form-item 内时,status 会自动跟随 FormItem 的校验状态。

弹层容器

把面板挂到 document.body 或自定义容器,避开 overflow 滚动裁切。

Variants

录入组件统一 variant 形态。四档:outlined(默认)/ filled / borderless / underlined

API

Props

参数类型默认值说明
modelValuestringnumbernull
defaultValuestringnumber''
options(string | number | { value, label?, disabled? })[][]候选项;string/number 形态的 label = value
placeholderstring--占位文案
disabledbooleanfalse是否禁用
allowClearbooleanfalse显示一键清空按钮
size'small' | 'default' | 'large''default'输入框尺寸
status'' | 'error' | 'warning' | 'success' | 'validating'''校验状态;置于 FormItem 时自动继承
filterOptionboolean | (input, option) => booleantrue过滤逻辑
caseSensitivebooleanfalse是否区分大小写(仅默认 includes 过滤生效)
notFoundContentstring暂无数据空数据占位
placement'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight''bottomLeft'浮层方位
popupClassNamestring--浮层根元素自定义 class
popupAppendToBodybooleanfalseTeleport 到 document.body
getPopupContainer(trigger: HTMLElement | null) => HTMLElement | null--自定义浮层挂载点,优先级高于 popupAppendToBody
transitionNamestringccui-auto-complete-fade浮层过渡名
popupMaxHeightnumber256浮层最大高度(px)
defaultActiveFirstOptionbooleanfalse打开浮层时是否默认高亮第一项
backfillbooleanfalse键盘导航时是否把高亮项 label 写回 input
searchDebouncenumber0搜索防抖延迟(毫秒),0 不防抖

Events

事件名回调签名触发时机
update:modelValue(value: string | number)输入或选中时
change(value: string | number)同 update:modelValue
search(keyword: string)同 update:modelValue(search 别名)
select(value: string | number, option: AutoCompleteOption)选中候选项时
open-change(open: boolean)浮层打开 / 关闭时
focus(e: FocusEvent)输入框聚焦
blur(e: FocusEvent)输入框失焦

Slots

名称参数说明
option{ option: AutoCompleteOption, index: number }自定义单项渲染
trigger{ value, onInput, onFocus, onBlur, onKeydown, placeholder, disabled }自定义输入框(如 textarea)

已知限制(未交付)

  • virtual list(候选项虚拟滚动):选项 > 1000 时性能未优化,复用 Tree/Select 的 use-virtual-list 留后续。

Released under the MIT License.