返回目录
组件详情入口
表单
@vean/ui
SInput

Input

Input 属于 表单 分类。建议先看演示与用法,再对照 API 表格完成接入和样式调整。

先用快捷跳转面板找到概述、用法、演示和 API,再往下细读完整文档内容。

快速跳转

同分类组件

如果你在同一类交互里做组合,这些组件通常会一起出现。

输入框

概述

用于输入文本的基础输入框组件,支持标准 input 属性、前后缀插槽与可清除功能。适用于任意短文本录入场景——表单字段、搜索框、过滤器。多行文本请使用 STextarea,敏感值请使用 SPassword,数值请使用 SInputNumber。

用法

特性

  • 📏 6 种尺寸:xs、sm、md、lg、xl、2xl
  • 🧹 可清除模式,悬停/聚焦时显示清除按钮(i18n aria-label)
  • 🔤 leading / trailing 插槽,用于前缀与后缀内容
  • 🔒 disabled / readonly 状态,交互守卫完整
  • 📋 设置 name 时通过代理隐藏输入框支持原生表单提交
  • ♿ 完整无障碍支持——aria-roledescription、清除按钮命名、axe 零违规
  • 🎯 TypeScript 类型安全,type 属性严格类型化

输入框组件系列

  • SInput - 基础文本输入组件
  • SInputClear - 清除按钮,clearable 时悬停/聚焦显示

演示

基础

modelValue:

插槽

API

Aria 层

5

Input

22 属性1 事件3 插槽
属性
属性名类型默认值描述
class
ClassValue
—
根类
size
ThemeSize
—
组件的视觉尺寸。
ui
Partial<InputUi>
—
该组件的按槽类重写。
inputRef
((el: HTMLInputElement) => void)
—
用于设置输入元素的函数。
clearable
boolean
false
是否显示“清除”按钮。
controlProps
InputControlProps
—
转发给控件的属性。
clearProps
InputClearProps
—
转发给 `clear` 元素的属性。
defaultValue
string
—
输入的默认值
modelValue
string
—
输入的受控值
disabled
boolean
—
当值为 `true` 时,禁止用户与输入内容进行交互。
readonly
boolean
—
当值为 `true` 时,输入内容为只读。
rootProps
BaseProps
—
转发至根元素的属性
name
string
—
字段的名称。作为名称/值对的一部分,与其所属表单一同提交。
required
boolean
—
当值为 `true` 时,表示用户必须先设置该值,所属表单才能提交。
id
string
—
输入元素的 ID
autofocus
boolean
—
当值为 `true` 时,系统会自动聚焦于输入内容。
autocomplete
'search' | 'name' | 'email' | 'tel' | 'url' | 'on' | 'off' | 'username' | 'current-password' | 'new-password' | 'one-time-code' | 'given-name' | 'family-name' | 'organization' | 'street-address' | 'address-level2' | 'postal-code' | 'country' | 'cc-name' | 'cc-number' | 'cc-exp' | 'cc-csc' | 'transaction-amount'
—
输入字段的 autocomplete 属性。 除 `on` / `off` 开关外,还支持 HTML 自动填充标记(包括密码管理器的值,例如 `current-password` / `new-password`)。
maxlength
number
—
输入内容允许的最大字符数
minlength
number
—
输入内容允许的最小字符数
pattern
string
—
输入的 pattern 属性
placeholder
string
—
输入的占位符
type
InputTypeHTMLAttribute
—
输入元素的类型。
事件
事件名参数描述
update:modelValue
string
当模型值发生变化时触发。
插槽
插槽名参数描述
leading
InputCompactSlotProps
为首行位置提供自定义内容。
trailing
InputCompactSlotProps
尾部槽位的自定义内容。
clear
InputCompactSlotProps
为“clear”槽位定制内容。

InputClear

4 属性1 事件
属性
属性名类型默认值描述
type
ButtonType
'button'
按钮元素的类型。可以是 'button'、'submit' 或 'reset' 之一。
disabled
boolean
—
该组件是否已禁用。
asChild
boolean
—
将默认渲染元素替换为作为子元素传递的元素,并合并两者的属性及行为。
as
AsTag | Component
'div'
该组件应渲染为的元素或组件。可通过 `asChild` 进行覆盖。
事件
事件名参数描述
clear
PointerEvent
点击“清除”按钮时触发。

InputCompact

19 属性2 事件3 插槽
属性
属性名类型默认值描述
inputRef
((el: HTMLInputElement) => void)
—
用于设置输入元素的函数。
clearable
boolean
false
是否显示“清除”按钮。
controlProps
InputControlProps
—
转发给控件的属性。
clearProps
InputClearProps
—
转发给 `clear` 元素的属性。
defaultValue
string
—
输入的默认值
modelValue
string
—
输入的受控值
disabled
boolean
—
当值为 `true` 时,禁止用户与输入内容进行交互。
readonly
boolean
—
当值为 `true` 时,输入内容为只读。
rootProps
BaseProps
—
转发至根元素的属性
name
string
—
字段的名称。作为名称/值对的一部分,与其所属表单一同提交。
required
boolean
—
当值为 `true` 时,表示用户必须先设置该值,所属表单才能提交。
id
string
—
输入元素的 ID
autofocus
boolean
—
当值为 `true` 时,系统会自动聚焦于输入内容。
autocomplete
'search' | 'name' | 'email' | 'tel' | 'url' | 'on' | 'off' | 'username' | 'current-password' | 'new-password' | 'one-time-code' | 'given-name' | 'family-name' | 'organization' | 'street-address' | 'address-level2' | 'postal-code' | 'country' | 'cc-name' | 'cc-number' | 'cc-exp' | 'cc-csc' | 'transaction-amount'
—
输入字段的 autocomplete 属性。 除 `on` / `off` 开关外,还支持 HTML 自动填充标记(包括密码管理器的值,例如 `current-password` / `new-password`)。
maxlength
number
—
输入内容允许的最大字符数
minlength
number
—
输入内容允许的最小字符数
pattern
string
—
输入的 pattern 属性
placeholder
string
—
输入的占位符
type
InputTypeHTMLAttribute
—
输入元素的类型。
事件
事件名参数描述
update:modelValue
string
当模型值发生变化时触发。
clear
PointerEvent
点击“清除”按钮时触发。
插槽
插槽名参数描述
leading
InputCompactSlotProps
为首行位置提供自定义内容。
trailing
InputCompactSlotProps
尾部槽位的自定义内容。
clear
InputCompactSlotProps
为“clear”槽位定制内容。

InputControl

InputRoot

15 属性1 事件
属性
属性名类型默认值描述
defaultValue
string
—
输入的默认值
modelValue
string
—
输入的受控值
disabled
boolean
—
当值为 `true` 时,禁止用户与输入内容进行交互。
readonly
boolean
—
当值为 `true` 时,输入内容为只读。
rootProps
BaseProps
—
转发至根元素的属性
name
string
—
字段的名称。作为名称/值对的一部分,与其所属表单一同提交。
required
boolean
—
当值为 `true` 时,表示用户必须先设置该值,所属表单才能提交。
id
string
—
输入元素的 ID
autofocus
boolean
—
当值为 `true` 时,系统会自动聚焦于输入内容。
autocomplete
'search' | 'name' | 'email' | 'tel' | 'url' | 'on' | 'off' | 'username' | 'current-password' | 'new-password' | 'one-time-code' | 'given-name' | 'family-name' | 'organization' | 'street-address' | 'address-level2' | 'postal-code' | 'country' | 'cc-name' | 'cc-number' | 'cc-exp' | 'cc-csc' | 'transaction-amount'
—
输入字段的 autocomplete 属性。 除 `on` / `off` 开关外,还支持 HTML 自动填充标记(包括密码管理器的值,例如 `current-password` / `new-password`)。
maxlength
number
—
输入内容允许的最大字符数
minlength
number
—
输入内容允许的最小字符数
pattern
string
—
输入的 pattern 属性
placeholder
string
—
输入的占位符
type
InputTypeHTMLAttribute
—
输入元素的类型。
事件
事件名参数描述
update:modelValue
string
当模型值发生变化时触发。

注意事项

架构与对标差异

VeanUI 将输入框拆分为负责状态、表单代理与清除按钮语义的 Aria 层(@vean/aria/input),以及负责变体与 UnoCSS 样式的 styled 层(@vean/ui)。Aria InputCompact 组合 InputRoot / InputControl / InputClear 并暴露 leading / clear / trailing 插槽,与 Radix 的 headless/styled 分离一致,区别于 Ant Design、Element Plus 等单包方案。

能力VeanUIAnt Design InputElement Plus InputRadix TextField
Aria/styled 分离✅——✅
受控/非受控✅✅✅✅
清除按钮(悬停显示)✅✅✅—
清除按钮 i18n 标签✅✅——
前缀/后缀插槽✅✅✅✅
原生表单代理✅———
尺寸变体✅✅✅—
showCount 计数器—✅✅—
error / loading—✅✅—

注意事项

  • showCount 计数器、error 态与 loading 态未实现,列为增强待办。
  • 清除按钮仅在悬停或聚焦时出现(桌面惯例);触屏场景如需清除入口,可借助 leading / trailing 插槽自行提供。
  • 根节点默认渲染 role="group"、aria-roledescription="Input" 与 spellcheck="false",属设计意图。

常见问题

如何添加前缀图标或后缀文本?

使用 leading 和 trailing 插槽,它们接收根节点上下文并渲染在输入框内部。

为什么清除按钮只在悬停时显示?

清除按钮可见性遵循桌面悬停/聚焦惯例(group-hover / group-focus-within),有意不常驻显示,以保持输入框紧凑并避免误清除。

输入框如何参与原生表单提交?

传入 name 即可——组件会渲染一个携带当前值的视觉隐藏代理输入框,原生表单提交与校验无需额外接线。

如何限制输入长度?

传入 maxlength / minlength,会透传到原生 input。可见计数器暂未提供(列为增强待办)。

更新日志

版本记录按发布版本分组,便于快速查看这个组件在不同版本里的实际变更。

v0.22.1

2026-05-14

对比版本

新功能

增强输入组件道具和上下文,以提高可访问性和可用性

范围: input作者: soybeanfe查看提交4cf60

v0.19.0

2026-05-11

对比版本

修复

在 InputCompact 的省略属性中加入 clearProps

范围: input作者: soybeanfe查看提交82f86

重构

将 "clearable "更名为 "clear",以保持一致

范围: input作者: soybeanfe查看提交b1072

v0.18.0

2026-05-05

对比版本

新功能

新增 InputClear 与 InputCompact 组件,支持清除功能

范围: input作者: soybeanfe查看提交9f4b2

维护

更新 SInput 测试中的 type 属性处理与清除触发逻辑

范围: input作者: soybeanjs, Copilot查看提交718f6

v0.0.10

2026-01-07

对比版本

新功能

为 InputControl 和 InputRoot 添加名称和必填道具,以增强表单处理功能

范围: input作者: soybeanjs查看提交f28c6

v0.0.2

2025-11-18

对比版本

新功能

实现 Input 组件,并提供各种示例和上下文支持

范围: input作者: soybeanjs查看提交2df28

新功能

为输入控件添加 aria-disabled 属性,以提升无障碍访问性

范围: input作者: soybeanjs查看提交e1e7e

新功能

实现 Input 组件,并提供各种示例和上下文支持

范围: input作者: soybeanjs查看提交2df28

新功能

为输入控件添加 aria-disabled 属性,以提升无障碍访问性

范围: input作者: soybeanjs查看提交e1e7e