Skip to content

Input 输入框

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

基础用法

基础用法

禁用状态

禁用状态

可清空

可清空

密码框

密码框

带图标的输入框

🔍
📅
带图标

文本域

文本域

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

自动高度

复合型输入框

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

Http://
.com
1
1
复合输入框

输入长度限制

0 / 10
0 / 100
字数限制

不同尺寸

不同尺寸

格式化输入

实际内部值:
格式化

视觉变体

通过 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 字节。

0 / 20
自定义字数计算

在 Nuxt 中使用

Input 组件完全支持 Nuxt 3/4 的 SSR 渲染。在 Nuxt 项目中使用时,组件会自动导入。

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'

Events

事件名说明回调参数
update:modelValue绑定值更新时触发(value: string) => void
input在 Input 值改变时触发(value: string) => void
change在 Input 失去焦点或用户按下回车时触发(value: string) => 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

主题变量

Input 组件使用以下 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)

Released under the MIT License.