Skip to content

Input 输入框

通过鼠标或键盘输入内容,是最基础的表单域包装。

基础用法

基础用法

禁用状态

禁用状态

可清空

可清空

密码框

密码框

带图标的输入框

带图标

文本域

文本域

可自适应文本高度的文本域

自动高度

复合型输入框

可以在输入框前后添加一个元素,通常是标签或按钮。

复合输入框

输入长度限制

字数限制

不同尺寸

不同尺寸

格式化输入

格式化

视觉变体

通过 variant 属性可以切换四种视觉风格:default(带边框)、filled(填充色)、borderless(无边框)、underlined(下划线)。

视觉变体

加载状态

设置 loading 属性为 true 时,在输入框尾部显示旋转加载图标,常用于异步校验用户名、实时搜索等场景。

加载状态

独立状态色

通过 status 属性可以在不依赖 Form 表单的情况下,直接给输入框赋予 successwarningerror 三种状态反馈色。

独立状态色

聚焦自选

设置 select-on-focus 后,用户鼠标点击或 Tab 键切入输入框时会自动全选内部文字,非常适合数值编辑、表格单元格编辑等场景。

聚焦自选

Esc 键清空

设置 clear-on-escape 后,用户按 Esc 键时会立即清空输入框内容,配合 clearable 使用体验更佳。

Esc 键清空

前后缀字符串 / 原生 Datalist

prefix/suffix 属性支持直接传入字符串(如货币符号、单位),无需写插槽。list 属性绑定原生 <datalist> 的 id,实现本地联想筛选。

前后缀字符串与 Datalist

自定义字数计算

通过 count-configcalculate 函数可以自定义字数统计逻辑,例如让汉字计 2 字节、英文计 1 字节。

自定义字数计算

在 Nuxt 中使用

YhInput 可直接用于 Nuxt 3/4 项目。服务端会先输出稳定的输入框结构,客户端激活后继续接管聚焦、清空、计数和其它交互逻辑。

Nuxt 中使用

SSR 注意事项

  • ✅ 基础输入、文本域模式完全支持
  • ✅ 样式及布局在服务器和浏览器保持一致
  • ✅ 动态 ID 生成在 SSR 中是安全的(基于 useId
  • ⚠️ autofocus 属性仅在客户端激活后生效

SSR 安全性

Input 组件针对 SSR 进行了优化,特别是 ID 生成机制确保了服务端渲染和客户端激活的一致性,有效避免了属性不匹配错误。

API

Props

属性名说明类型默认值
model-value / v-model绑定值string | number
type类型'text' | 'password' | 'textarea' | 'number' | 'email' | 'url' | 'tel' | 'search''text'
size输入框尺寸'large' | 'default' | 'small''default'
placeholder占位文本string
variant视觉变体'default' | 'filled' | 'borderless' | 'underlined''default'
status独立状态反馈色,不依赖 FormItem'' | 'success' | 'warning' | 'error'''
loading是否显示加载状态booleanfalse
disabled是否禁用booleanfalse
readonly是否只读booleanfalse
clearable是否可清空booleanfalse
clear-on-escape按 Esc 键时是否清空内容booleanfalse
select-on-focus获取焦点时是否自动全选文字booleanfalse
show-password是否显示切换密码图标booleanfalse
show-word-limit是否显示字数统计booleanfalse
count-config自定义字数统计配置{ calculate?: (value: string) => number }
maxlength最大输入长度number | string
minlength最小输入长度number | string
prefix-icon前置图标string | Component
suffix-icon后置图标string | Component
clear-icon清除图标string | Component
prefix前置文本(字符串快捷方式,与 #prefix 插槽等效)string
suffix后置文本(字符串快捷方式,与 #suffix 插槽等效)string
list原生 list 属性,绑定 datalist 的 idstring
autofocus自动获取焦点booleanfalse
autocomplete原生 autocomplete 属性string'off'
name原生 name 属性string
form原生 form 属性string
id输入框 idstring
aria-label等价于原生 input aria-label 属性string
tabindex输入框的 tabindexstring | number
validate-event输入时是否触发表单的校验booleantrue
input-styleinput 元素或 textarea 元素的 stylestring | object
label(已过时) 等价于原生 input aria-label 属性,建议使用 aria-labelstring
inputmode等价于原生 input inputmode 属性string
model-modifiersv-model 修饰符object
formatter格式化函数(用于显示)(value: string | number) => string
parser解析函数(用于更新值)(value: string) => string
rows文本域行数 (type="textarea" 时有效)number2
autosize自适应文本高度 (type="textarea" 时有效)boolean | { minRows?: number; maxRows?: number }false
resize是否允许调整大小 (type="textarea" 时有效)'none' | 'both' | 'horizontal' | 'vertical'
theme-overrides组件级主题覆盖ComponentThemeVarsundefined

Events

事件名说明回调参数
update:modelValue绑定值更新时触发(value: string | number) => void
input在 Input 值改变时触发(value: string | number) => void
change在 Input 失去焦点或用户按下回车时触发(value: string | number) => void
focus在 Input 获得焦点时触发(event: FocusEvent) => void
blur在 Input 失去焦点时触发(event: FocusEvent) => void
clear在点击清空按钮时触发() => void
keydown按下键盘时触发(event: KeyboardEvent) => void
keyup释放键盘时触发(event: KeyboardEvent) => void
compositionstart输入法开始输入时触发(event: CompositionEvent) => void
compositionupdate输入法输入过程中触发(event: CompositionEvent) => void
compositionend输入法输入结束时触发(event: CompositionEvent) => void

Slots

插槽名说明
prefix输入框头部内容
suffix输入框尾部内容
prepend输入框前置内容(复合输入框)
append输入框后置内容(复合输入框)
clearIcon自定义清除图标
loadingIcon自定义加载图标

Expose

属性/方法名说明类型
ref输入框 DOM 元素HTMLInputElement | HTMLTextAreaElement | undefined
wrapperRef包裹元素 DOMHTMLElement | undefined
focus使 input 获取焦点() => void
blur使 input 失去焦点() => void
select选中 input 中的文字() => void
clear清空 input 内容() => void
textLength当前输入值的显示字数(应用 countConfig 后的结果)number

主题变量

YhInput 支持 themeOverrides。组件本身消费以下输入框相关 CSS 变量:

变量名说明默认值
--yh-input-height输入框高度var(--yh-component-size-default)
--yh-input-font-size字体大小var(--yh-font-size-base)
--yh-input-padding输入框内边距0 var(--yh-spacing-md)
--yh-input-border-color边框颜色var(--yh-border-color)
--yh-input-hover-border-color悬停边框色var(--yh-border-color-hover)
--yh-input-focus-border-color聚焦边框色var(--yh-color-primary)
--yh-input-bg-color背景颜色var(--yh-fill-color-blank)

类型导出

名称说明
YhInputPropsYhInput 的 props 类型
YhInputEmitsYhInput 的 emits 类型
YhInputSlotsYhInput 的 slots 类型
YhInputExposeYhInput 的 expose 类型
YhInputType输入类型联合类型
YhInputSize输入尺寸联合类型
YhInputVariant视觉变体联合类型
YhInputStatus状态色联合类型
YhInputCountConfig字数统计配置类型
YhInputInstanceYhInput 的实例类型

Released under the MIT License.