Skip to content

Input 输入框 ​

输入框是表单数据录入的基础组件,覆盖从单行短文本到多行长文本的全场景输入需求。通过尺寸梯度、状态反馈与辅助元素的组合,降低用户输入门槛,提升填写效率与准确性。

ts
import { createApp } from 'vue'
import { ElInput } from '@szhn/dh-design-pc'

const app = createApp()
app.use(ElInput)

基础用法 / 类型 ​

分为文本与文本域两种。文本适用于单行短文本输入,内容超出时自动截断,用于用户名、手机号、邮箱等场景;文本域适用于多行长文本输入,支持自适应高度扩展,用于备注、描述、评论等场景。

尺寸 ​

提供大、中、小三种高度,分别对应 40px、32px、24px。大尺寸用于页面核心表单与独立搜索框;中尺寸为默认规格,适配常规表单与数据筛选;小尺寸用于表格行内编辑与紧凑信息区。

搜索框 ​

搜索框支持线性与面性两种外观,可将搜索图标放在左侧或右侧。右侧搜索图标在输入状态下会与清除按钮分隔,方便用户区分清空和搜索动作。

交互状态 ​

涵盖默认、输入中、悬停、提示、禁用五种状态。默认态展示占位提示;输入态展示当前内容;悬停态强化边框反馈;提示态在输入框下方展示辅助文案;禁用态用于条件未满足或权限不足的场景。

辅助元素 ​

包括前/后缀图标、辅助文字、密码与字数限制。前后缀图标用于标记输入类型或提示输入意图;密码输入用于敏感信息;字数限制用于控制输入长度并给出即时反馈。

使用规则 ​

同表单内尺寸保持一致,禁止混排;占位文字仅作提示,不可包含完成任务所需的关键信息;文本域默认按组件尺寸显示稳定高度,需要随内容增长时使用自适应高度;禁用状态用于条件未满足或权限不足,避免用户无效尝试。

Element Plus 示例补充 ​

保留 Element Plus 输入框的其他常用示例,重复场景已统一到上方设计规范示例。

禁用状态 ​

一键清空 ​

自定义清除图标 ​

密码输入框 ​

文本域 ​

可调整尺寸 ​

字数限制 ​

扩展能力 ​

格式化 ​

在 formatter 的情况下显示值,通常同时使用 parser 还原输入值。

自适应文本域 ​

设置 autosize 后,文本域可根据内容自动调整高度。也可以给 autosize 提供最小和最大行数范围。

复合型输入框 ​

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

计数图形 ​

:::小技巧

浏览器支持 & 回退策略

当使用 count-graphemes prop 时,组件使用以下方法:

在实现自己的 count-graphemes 函数时,如果需要对复杂的 unicode 字符提供强大的支持,请考虑使用 Intl.Segmenter。

:::

常见问题 ​

典型问题: #7287

PS: 由于 ElInput 组件没有默认宽度,当显示 clearable 图标时,组件的宽度将被撑开,可以通过设置固定宽度属性来解决。

API ​

Attributes ​

属性名说明类型默认值
type输入类型,更多信息请参见 MDNstringtext
model-value / v-model绑定值string / number—
model-modifiersv-model 修饰符,参考 Vue 修饰符object—
maxlength同原生 maxlength 属性string / number—
minlength原生属性,最小输入长度string / number—
show-word-limit是否显示统计字数, 只在 type 为 'text' 或 'textarea' 的时候生效booleanfalse
word-limit-position字数统计的位置,仅当 show-word-limit 为 true 时生效。enum"inside"
placeholder输入框占位文本string—
clearable是否显示清除按钮,只有当 type 不是 textarea时生效booleanfalse
clear-icon自定义清除图标string / objectCircleClose
formatter指定输入值的格式。(只有当 type 是"text"时才能工作)Function—
parser指定从格式化器输入中提取的值。(仅当 type 是"text"时才起作用)Function—
show-password是否显示切换密码图标booleanfalse
disabled是否禁用booleanfalse
size输入框尺寸,只在 type 不为 'textarea' 时有效enum—
prefix-icon自定义前缀图标string / Component—
suffix-icon自定义后缀图标string / Component—
rows输入框行数,仅 type 为 'textarea' 时有效number2
autosizetextarea 高度是否自适应,仅 type 为 'textarea' 时生效。 可以接受一个对象,比如: { minRows: 2, maxRows: 6 }boolean / objectfalse
autocomplete原生 autocomplete 属性stringoff
name等价于原生 input name 属性string—
readonly原生 readonly 属性,是否只读booleanfalse
max原生 max 属性,设置最大值—:::
min原生属性,设置最小值——
step原生属性,设置输入字段的合法数字间隔:::—
resize控制是否能被用户缩放enum—
autofocus原生属性,自动获取焦点booleanfalse
form原生属性string —
aria-label a11y等价于原生 input aria-label 属性string—
tabindex输入框的 tabindexstring / number—
validate-event输入时是否触发表单的校验booleantrue
input-styleinput 元素或 textarea 元素的 stylestring / object{}
label a11y deprecated等价于原生 input aria-label 属性string—
inputmode等价于原生 input inputmode 属性string—
count-graphemes自定义函数用于计算字形;设置后,将绕过原生的 maxlength/minlength 约束。 组件使用 Intl.Segmenter(Chrome 87+、Firefox 125+、Safari 14.1+)进行正确的字素聚类;旧版浏览器回退到使用 Array.from() 进行代码点迭代。Function:::

Events ​

事件名说明类型
blur当选择器的输入框失去焦点时触发Function
focus当选择器的输入框获得焦点时触发Function
change仅当 modelValue 改变时,当输入框失去焦点或用户按Enter时触发Function
input在 Input 值改变时触发Function
clear在点击由 clearable 属性生成的清空按钮时触发Function
keydown按下键时触发Function
mouseleave当鼠标离开输入元素时触发Function
mouseenter当鼠标进入输入元素时触发Function
compositionstart输入法输入开始时触发Function
compositionupdate输入法输入改变时触发Function
compositionend输入法输入完成时触发Function

Slots ​

插槽名说明
prefix输入框头部内容,只对非 type="textarea" 有效
suffix输入框尾部内容,只对非 type="textarea" 有效
prepend输入框前置内容,只对非 type="textarea" 有效
append输入框后置内容,只对非 type="textarea" 有效
password-icon作为输入密码图标的内容,仅在 show-password 为 true 时生效。 作用域变量为 { visible: boolean }

Exposes ​

名称说明类型
blur使 input 失去焦点Function
clear清除 input 值Function
focus使 input 获取焦点Function
inputInput HTML 元素object
refHTML元素 input 或 textareaobject
resizeTextarea改变 textarea 大小Function
select选中 input 中的文字Function
textareaHTML textarea 元素object
textareaStyletextarea 的样式object
isComposing是否是输入 composing 状态object
passwordVisible密码是否可见object