# Select 选择器

# Select 概述

使用模拟的增强下拉选择器来代替浏览器原生的选择器。 选择器支持单选、多选、搜索,以及键盘快捷操作。

# Select 代码演示

# 基础用法

基本用法。可以使用 v-model 双向绑定数据。
单选时,value 只接受字符串和数字类型;多选时,只接受数组类型;多选又设置了isString的情况下,只接受字符串类型;组件会自动根据 Optionvalue 来返回选中的数据。
可以给 Select 添加 style 样式,比如宽度。
在展开选择器后,可以使用键盘的 updown 快速上下选择,按下 Enter 选择,按下 Esc 收起选择器。

# 多选

通过设置属性 multiple 开启多选模式,点击复选框选中选项。多选模式下,model 接受数组类型的数据,所返回的也是数组。

# 禁用

通过给 Select 设置属性 disabled 禁用整个选择器。
通过给 Option props Option 设置属性 disabled 可以禁用当前项。

# 可清空

通过设置属性 clearable 可以清空已选项,仅适用于单选模式。
clearSingleSelect 方法,清空单选项,仅在 clearable="true" 时有效。

# 可搜索

通过设置属性 filterable 可以开启搜索模式。单选和多选都支持搜索模式。多选搜索时,可以使用键盘 Delete 快捷删除最后一个已选项。
支持模糊查询,不支持拼音查询。
on-query-change 事件:搜索词改变时触发,控制台中可查看。
setQuery 方法:设置搜索词,为空时清空,仅在 filterable="true" 时有效。

# 远程搜索

远程搜索需同时设置 filterableremoteremote-methodloading 四个 props,其中 loading 用于控制是否正在搜索中,remote-method 是远程搜索的方法。loading-text 为远程搜索中的文字提示 ,默认显示加载中。
注意:需要给 Option 设置 key。
设置初始显示值,需设置 label 属性。
本例为美国州名,尝试输入一些字母。

# 尺寸

通过设置 size 属性为 largesmall 将输入框设置为大和小尺寸,不设置为默认(中)尺寸。

# 选择框默认文字

通过 placeholder 属性设置选择框默认文字,不设置默认为请选择。

# 当下拉列表为空时显示的内容

通过 not-found-text 属性设置当下拉列表为空时显示的内容,不设置为默认无匹配数据。
输入框中输入值,无匹配值时显示该内容。

# 是否将 labelvalue 一并返回

通过 label-in-value 在返回选项时,是否将 label 和 value 一并返回,默认只返回 value。
on-change 事件,选中的 Option 变化时触发,默认返回 value,如需返回 label,设置 label-in-value

# 弹窗的展开方向

通过 placement 弹窗的展开方向,可选值为 bottom 和 top。默认值为 bottom。

# 分组

使用 Option-group 可将选项进行分组。

# 自定义模板

对选项内容可以进行自定义。注意在 Option 中使用 label 属性,可以让选择器优先读取该属性的值以显示,否则选中时显示的内容会和自定义的一样,这往往不是我们想要的。
对于选项显示内容的逻辑:优先显示 slot 内容,如果没有定义 slot,则显示 label 的值,如果没有设置 label,则显示 value 的值。

# 下拉增加数据

用于数据量大的场景,通过 on-scroll 事件监听滚动条位置,动态的加载 option 中的数据。

# 允许添加新条目

当关键字检索不到条目时,允许用户将关键字添加为新条目。

# 远程搜索自定义图标

需开启远程搜索 remote
注意: remoteIcon 配置 hui 图标库中的 icon 的 name。

# algin 设置文本对齐方式

使用 algin 可以设置文本对齐方式,可选值有 leftcenterright
默认为 left

# setDefSelect 默认选择第一条

使用 setDefSelect 可以设置默认选择第一条,适合不能为空的业务场景。
控件第一次挂载有效且单选有效。

# 下拉框宽度设置

dropWidth 设置下拉框宽度,不设置时等于输入框宽度。
maxDropWidth 下拉框的自适应时设置的最大宽度,实际值会取输入框宽度与 maxDropWidth 的最大值。
widthAdaption 下拉框的宽度是否随着内容自适应,以 select 设置的宽度为最小宽度,最大宽度取输入框宽度与 maxDropWidth 的最大值。

# isBackClear 使用退格键清空选项

isBackClear 设置当按下退格键 Backspace 时,清空所选项
多选模式下清空全部选项
仅支持 Chrome 浏览器

# multClearable 多选框清空按钮

multClearable 为多选框提供全部清空按钮。

# zeroToNull 双向绑定空选项和 0

zeroToNull 双向绑定输入‘0’转化为空值,输出空值转化为‘0’(单选有效)。

# collapseTags 压缩显示多选项

collapseTags 多选时是否将选项压缩展示个数

TIP

注意:多选可搜索时,若需要将搜索输入框与选中值同行显示,设置样式 .h-select-input{ width:20px; } 即可。

# notAutoFocus 和 accuFilter

  1. notAutoFocus 不自动将焦点放在第一搜索项。
  2. accuFilter 如果搜索时输入的信息完全匹配到 value 或者 label 的时候自动勾上 (不支持远程搜索)。

# 全选过滤后的数据

isSelectFilter 开启后全选时改为只选择过滤后的数据,而不是全部数据。

# 多选时输入框显示 value 值

showValue 开启后多选时输入框的已选项 tag 改为显示 value 值,而不是默认的 label。

# 下拉框方向自定义

autoPlacement 日期面板方向自适应,其相对于外部第一个非静态定位父元素开始定位。

# Select API

# Select props

属性 说明 类型 默认值
value 指定选中项目的 value 值,可以使用 v-model 双向绑定数据。单选时只接受 String 或 Number,多选时只接受 Array,多选时如果设置了isString 只接受 String String | Number | Array
multiple 是否支持多选 Boolean false
disabled 是否禁用 Boolean false
clearable 是否可以清空选项,只在单选时有效 Boolean true
filterable 是否支持搜索 Boolean false
remote 是否使用远程搜索 Boolean false
remote-method 远程搜索的方法 Function -
filter-method 本地自定义搜索方法(v1.0.68)不支持远程搜索
自定义单个 option 的方法, return true 表示显示 return false 表示不显示
返回参数: val (搜索值) obj (当前 option 对象)
Function -
loading 当前是否正在远程搜索 Boolean false
loading-text 远程搜索中的文字提示 String 加载中
showLoadingIcon 显示 loading 动画效果,需配合使用 loading (v1.0.67) Boolean false
label 仅在 remote 模式下,初始化时使用。因为仅通过 value 无法得知选项的 label,需手动设置。 String | Number | Array
size 选择框大小,可选值为 largesmall 或者不填(只在单选时生效) String -
placeholder 选择框默认文字 String 请选择
not-found-text 当下拉列表为空时显示的内容 String 无匹配数据
label-in-value 在返回选项时,是否将 label 和 value 一并返回,默认只返回 value Boolean false
placement 弹窗的展开方向,可选值为 bottomtopbottom-starttop-start ( bottom-start、top-start 属性只在 1.0.14 或以上版本有效 ) String bottom
transfer 是否将弹层放置于 body 内,在 Tabs、带有 fixed 的 Table 列内使用时,建议添加此属性,它将不受父级样式影响,从而达到更好的效果 Boolean false
isString 只在多选模式下使用,将多选时双向绑定的变量的格式变为 String 类型,多个选项用 ' , ' 隔开 Boolean false
isCheckall 是否显示全选反选快捷方式,只在多选模式下使用 Boolean false
noMoreText 下拉加载完成数据提示,只在使用下拉局部刷新数据时使用 String 没有更多数据
isComputed 是否显示加载完成数据提示,只在使用下拉局部刷新数据时使用 Boolean false
isArrow 不显示箭头,默认显示 Boolean true
algin 文本显示位置 leftcenterright String left
setDefSelect 输入框选择为空时默认选择第一条(控件第一次挂载有效且单选有效) Boolean false
dropWidth 设置下拉框的宽度,不设置时下拉框的宽度等于输入框宽度 String/Number -
showBottom 搜索框显示位置,只在 ( filterable为true ) 时使用,默认显示在输入框位置,设置为 true 时显示在下拉框顶部 Boolean false
searchHolder 搜索框显示位置在下拉框中时,框内显示文字 String 请输入匹配字段
checkToHead 筛选框左侧加入多选框,可进行全选取消功能,请不要 isCheckall 同时使用(只在多选且筛选框下有效)(此属性只在1.0.10或以上版本有效) Boolean false
showTitle 是否显示提示(此属性只在 1.0.11 或以上版本有效) Boolean false
specialIndex 下拉框 value 为 '-1' 选项和其他选项需要互斥时使用(为 true 时互斥) Boolean false
hideMult 隐藏多选框的多选模式 (只在设置多选时有效) (此属性只在 1.0.19 或以上版本有效)(超长显示省略号所以 widthAdaption 不会触发) Boolean false
focusSelect 光标进入输入框时是否选中文字(仅在单选模式下filterable为true时生效)(此属性只在1.0.20或以上版本有效) Boolean true
remoteFocusNotShowList 远程单选搜索,已选中选项后光标进入输入框时是否显示下拉选项【修改搜索内容可以正常显示下拉】(不支持focusSelect及showBottom)(此属性只在1.0.22或以上版本有效) Boolean false
scrollFix 滚动时先固定滚动条,只有滚动至当屏最上方或者最下方时进行滚动条滚动,否则滚动条不动,只改变 focusIndex 值(此属性只在 1.0.24 或以上版本有效,不支持静态搜索) Boolean false
multClearable 多选框是否显示总体清空图标(V1.0.25) Boolean false
isBackClear 输入框是否可通过 backspace 按键清除选中项( V1.0.25,只支持谷歌 ) Boolean false
zeroToNull 双向绑定输入 ' 0 ' 转化为空值,输出空值转化为 '0' (单选有效)(V1.0.26) Boolean false
widthAdaption 下拉框的宽度是否随着内容自适应,以 select 设置的宽度为最小宽度,最大宽度取输入框宽度与 maxDropWidth 的最大值(此属性只在 1.0.26 或以上版本有效) Boolean false
maxDropWidth 下拉框的自适应时设置的最大宽度,实际值会取输入框宽度与 maxDropWidth 的最大值 (此属性只在 1.0.26 或以上版本有效) String / Number 500
allowCreate 是否允许新建条目。需配合开启 filterable( 此属性只在1.0.30或以上版本有效 ) Boolean false
autoPlacement 日期面板方向自适应,其相对于外部第一个非静态定位父元素开始定位 (v1.0.31) Boolean false
remoteIcon 开启远程搜索时,右侧显示的图标( 配置 hui 图标库中的 name ),使用此属性需开启 remote (v1.0.32) String -
collapseTags 多选时是否将选项压缩展示个数 ( 此属性只在 1.0.37 或以上版本有效 ),注意:多选可搜索时,若需要将搜索输入框与选中值同行显示,设置样式 .h-select-input { width: 20px; } 即可 Boolean false
notAutoFocus 搜索时是否不将焦点放在第一搜索项 (v1.0.37) Boolean false
isSelectFilter 全选时是否全选过滤后的数据 (v1.0.41) Boolean false
showValue 多选时输入框是否显示 value 值,默认label(v1.0.43) Boolean false
accuFilter 多选时是否开启精确搜索,如果搜索时输入的信息完全匹配到 value 或者 label 的时候 自动勾上,暂不支持远程搜索(需开启 filterable )(v1.0.43)
注意:当option同时设置了lable,slot,搜索选中的label匹配项,会两项都可以作为匹配项 v1.12.0
Boolean false
validate 组件是否触发校验事件 (v1.0.45) Boolean true
tabindex 设置输入框 tabindex (v1.0.47) String | Number -1
tabToSave 当开启 allowCreatefilterabletabToSave 表示新建条目时,输入Tab键,保存当前新建条目(与 enter 键功能一样)(v1.0.68) Boolean false
initValueTypeToString 初始化 v-model 绑定的 value 值,如果数据类型是 Number 类型,可以将 Number 类型转化成 string 类型,e.g: 1 ===> '1' (v1.0.62)
注:此功能仅在初始化 v-model 数据时候有效,并非改变 v-model 绑定变量的类型
Boolean false
queryNotEmpty 当 multiple remote-method 时,设置此属性 query 在控件不失去焦点的情况下,query 保留之前的搜索值。
当 dropdown 隐藏时,控件失去焦点,query = ‘’, 触发 remoteMethod() (v1.0.65)
Boolean false
maxlength 控制输入框可输入长度,需配合开启 filterable (v1.0.68) Number -
chooseToRemoteMethod 表示在单选时,当用户选择某个选择项时,触发 数据为空 的远程搜索 (remote-method ) 仅适用于单选( v1.0.68) Boolean false
multipleNumber 表示用户在多选情况下,限制用户选择的个数 (v1.0.68) 暂时不支持用 arr.push、pop 等方法添加或者删除 v-model 绑定的值 Number | String null
valueNotMatch true:表示 v-model 绑定的变量值与下拉选择的值不匹配(即脏数据)会把 v-model 的清空 (v1.0.86)
针对单选有效,不支持远程搜索,不支持allowCreate
多选场景下,脏值不匹配下拉列表时,当前数值在 v-model 绑定的变量中清除 (v1.0.89)
false: 保留原先的值(默认)
注意:设置valueNotMatch为true时,修改options对应list和修改v-model需要异步进行
Boolean false
dropMinWidth 下拉框的最小宽度,当输入框大于dropMinWidth时,让下拉面板与输入框同宽;当输入框小于dropMinWidth时,下拉框用dropMinWidt(v1.1.1)
注意:与widthAdaption互斥
String | Number -

# Select events

事件名 说明 返回值
on-change 选中的 Option 变化时触发,默认返回 value,如需返回 label,详见 label-in-value 属性 当前选中项
on-query-change 搜索词改变时触发 query
on-scroll 数据太多出现滚动条,改变滚动条触发 返回第一个参数为滚动条距离底部的距离(数据为0时表示滚动已经滚动到底部);第二个参数为滚动方向 ("x" 代表水平滚动,"y" 代表垂直滚动,v1.0.47)
on-blur 失去焦点时触发(只在 filterable 为 true 下有效)(此属性只在 18 版本及以上有效)
on-focus 获取焦点时触发 (只在 filterable 为 true 下有效)(此属性只在 1.0.49 版本及以上有效)
on-drop-change 弹框关闭/展开时触发 (v1.0.43) 弹窗状态
on-keydown 键盘按键按下触发 (v1.0.51) 参数一:value
参数二:event
on-keyup 键盘按键弹起触发 (v1.0.51) 参数一:value
参数二:event
on-item-remove 多选时有效
1. 点击每个选中项 item 后的×,触发事件
2. 当 filterable && !isBackClear 键盘输入 backspace 等删除键时,删除单个 item 时,触发事件
3. 直接点击下拉列表已选中的项, 触发事件 (v1.0.74)
参数一:当前选中项
参数二:当前项的索引

# Select methods

方法名 说明 参数
setQuery 设置搜索词,为空时清空,仅在 filterable="true" 时有效 query
clearSingleSelect 清空单选项,仅在 clearable="true" 时有效
focus 通过 this.refs.xxx.focus() 调用,是当前输入框获取焦点,并打开选择面板(此方法只在1.0.9或以上版本有效)
blur 手动取消输入框焦点 ( this.$refs.xxx.blur() )(此属性只在1.0.10或以上版本有效)
toggleSelect 全选/全不选 ( this.$refs.xxx.toggleSelect() ) Boolean::status

# Select Slot

名称 说明
header 自定义弹框头部内容 (v1.0.43)
footer 自定义弹框尾部内容 (v1.0.22)

# Option props

属性 说明 类型 默认值
value 选项值,默认根据此属性值进行筛选,必填 String | Number
label 选项显示的内容,默认会读取 slot,无 slot 时,优先读取该 label 值,无 label 时,读取 value。当选中时,选择器会显示 label 为已选文案。大部分情况不需要配置此项,直接写入 slot 即可,在自定义选项时,该属性非常有用。 String -
disabled 是否禁用当前项 Boolean false

# OptionGroup props

属性 说明 类型 默认值
label 分组的组名 String

# Option Events

事件名 说明 返回值
on-keyup enter 选中时触发( 仅在1.0.25版本及其以上使用 ) 当前选中项 value