Input

输入框是最基本的接收用户文本输入的组件。

设计文档(新窗口打开)

输入框是最基本的接收用户文本输入的组件。

代码演示

如何引入

import { Input, TextArea, InputGroup } from '@chenzy-design/svelte';

基本

基本使用

三种大小

默认定义了三种尺寸:大、默认、小





不可用

设定 disabled 属性为 true



前缀/后缀

在输入框上增加前缀、后缀图标,可以是任意节点。

当 prefix、suffix 传入的内容为文本或者图标时,会自动带上左右间隔,若为自定义节点,则左右间隔为 0。



Prefix




Suffix

前置/后置标签

在输入框上增加前置/后置标签

当 addonBefore、addonAfter 传入的内容为文本或者图标时,会自动带上左右间隔,若为自定义节点,则左右间隔为 0。

http://
.com

带移除图标

点击图标删除所有内容

密码模式

隐藏输入的具体内容

校验状态

可设置不同校验状态,展示不同样式





受控组件

Input 值完全取决于传入的 value 值,配合 onChange 回调函数使用

输入框组合

可以将多个输入框放入 InputGroup 的容器中,通过设置 size、disabled 可统一设置组合中的输入框属性,支持输入框类型包括:Input、InputNumber、Select、AutoComplete、TreeSelect、Cascader、DatePicker。

注意事项
InputGroup 不推荐插入非支持元素,Form.InputGroup 会对支持的元素进行错误聚合,而不会对自定义元素进行处理。











多行输入框

用于多行输入。通过设置 maxCount 属性可以进行字数限制并显示字数统计。支持 showClear。



0 / 100

设置 TextArea 高度

通过 textareaStyle 可以设置内部 textarea 元素的样式,如高度、背景色等。





行号

通过设置 showLineNumber 展示行号。可用 lineNumberStart 设置起始行号,或通过 lineNumberStyle/lineNumberClassName 自定义行号区样式。

1
2
3
4
5

使用 Shift + Enter 换行的多行输入框

TextArea 默认情况下 Enter 回车与 Shift + Enter 均可实现换行。通过适当的事件监听与禁用默认行为,你可以实现禁用 Enter 换行,仅 Shift + Enter 才能换行。

使用

Shift+ Enter
换行的 TextArea

自动扩展的多行输入框

通过设置 autosize 属性可设置只有高度自动随内容增加而变化。





0 / 100

自定义计算字符串长度

通过设置 getValueLength 属性可以自定义计算字符串长度。搭配 maxLength 和 minLength 可以支持 emoji 长度按照可见长度计算。

传入 getValueLength 时,内部做了什么:

  • maxLength:不直接透传 maxLength 给原生 input。如果输入长度超出最大限制,则使用上一次输入的合法长度字符。
  • minLength:动态切换 minLength 的长度,emoji 按照一个长度计算。
  • maxCount:使用 getValueLength 获取的值与 maxCount 进行比较。

maxLength=10

尝试输入以下字符
💖
👨‍👩‍👧‍👦


Form.Input + minLength=4

maxCount=10

10 / 10
说明
此处使用浏览器原生 Intl.Segmenter 按可见字符(grapheme)计数,emoji(含组合 emoji)算 1,无需引入第三方分词包。

输入法模式

通过设置 composition 属性为 true,可以开启输入法模式。在该模式下,使用输入法(如中文拼音)输入时,onChange 不会在输入法未确认(如拼音过程中)触发,而是在输入法确认后触发一次。适用于实时搜索等场景,避免在拼音输入过程中触发不必要的请求。

Input 和 TextArea 均支持该属性。

Input with composition

onChange 触发次数: 0


TextArea with composition

onChange 触发次数: 0

API 参考

Input

其他属性与 html input 标签保持一致

属性说明类型默认值
addonAfter后置标签Snippet | string-
addonBefore前置标签Snippet | string-
affixIsIconprefix/suffix 传 Snippet 时是否按图标间距渲染(Svelte 无法内省 Snippet 内容,显式声明;传非图标节点时设为 false 落到「两侧均不加外边距」的第三态)booleantrue
ariaDescribedby关联说明 / 错误文本节点 idstring-
ariaErrormessage设置 aria-errormessage 属性string-
aria-label设置 aria-label 属性string-
ariaLabelledby设置 aria-labelledby 属性string-
ariaRequired必填语义(Form.Field required 透传),输出 aria-requiredboolean-
autoFocus挂载时自动聚焦booleanfalse
borderless无边框模式booleanfalse
class根容器自定义类名string-
clearIcon自定义清除按钮图标,showClear 为 true 且有值时生效Snippet-
composition是否开启输入法模式,开启后输入法未确认期间不触发 onChange,输入法确认后触发一次 onChangebooleanfalse
defaultValue输入框内容默认值string''
disabled是否禁用booleanfalse
getValueLength自定义计算字符串长度(存在时接管 maxLength 校验,原生 maxlength 不下发)(value: string) => number-
hideSuffix清除按钮与后缀标签并存时隐藏后缀标签,默认两者并列booleanfalse
insetLabel内嵌标签(渲染在输入框内左侧,与 prefix 同槽)Snippet | string-
insetLabelId内嵌标签容器 id(关联 aria)string-
inputStyleinput 元素内联样式string-
maxLength原生 maxlengthnumber-
minLength最小长度,下发原生 minlength 触发浏览器校验;配合 getValueLength 时按可见长度换算number-
mode输入框的模式,可选值 passwordstring-
prefix前缀标签Snippet-
preventScroll调用 focus() 时是否阻止滚动文档以显示新聚焦的元素booleanfalse
readonly是否只读booleanfalse
showClear输入框有内容且 hover 或 focus 时展示清除按钮booleanfalse
size输入框大小,large、default、smallstring‘default’
style根容器内联样式string-
suffix后缀标签Snippet-
type声明 input 类型,同原生 input 标签的 type 属性string‘text’
validateStatus校验状态,可选值 default、error、warning、success,仅影响展示样式string‘default’
value输入框内容(受控)string-
onBlur输入框失去焦点时的回调(e: FocusEvent) => void-
onChange输入框内容变化时的回调(value: string, e: Event) => void-
onClear点击清除按钮时的回调(e: MouseEvent) => void-
onEnterPress按回车时回调(composition 中不触发)(e: KeyboardEvent) => void-
onFocus输入框 focus 时的回调(e: FocusEvent) => void-
onInput原生 input 事件回调(value: string, e: Event) => void-
onKeyDownkeydown 回调(e: KeyboardEvent) => void-
onKeyPresskeypress 回调(e: KeyboardEvent) => void-
onKeyUpkeyup 回调(e: KeyboardEvent) => void-
onCompositionStartcompositionstart 回调(e: CompositionEvent) => void-
onCompositionEndcompositionend 回调(e: CompositionEvent) => void-
onCompositionUpdatecompositionupdate 回调(e: CompositionEvent) => void-

TextArea

其他属性与 html textarea 标签保持一致

属性说明类型默认值
ariaDescribedby关联说明 / 错误文本节点 idstring-
ariaErrormessage设置 aria-errormessage 属性string-
aria-label设置 aria-label 属性string-
ariaLabelledby设置 aria-labelledby 属性string-
ariaRequired必填语义(Form.Field required 透传)boolean-
autoFocus挂载时自动聚焦booleanfalse
autosize是否随内容自适应高度,可写成对象 { minRows?: number, maxRows?: number }boolean | objectfalse
borderless无边框模式booleanfalse
class根容器自定义类名string''
clearIcon自定义清除按钮图标Snippet-
cols默认列数number-
composition是否开启输入法模式,开启后输入法未确认期间不触发 onChange,确认后触发一次booleanfalse
count自定义计数器渲染(覆盖内建),作用域 { count, maxCount, overLimit }Snippet-
defaultValue输入框内容默认值string''
disabled禁用状态booleanfalse
getValueLength自定义计算字符串长度(value: string) => number-
lineNumberClassName行号区域 classNamestring-
lineNumberStart行号起始值number1
lineNumberStyle行号区域样式string-
maxCount设置字数限制并显示字数统计(不截断)number-
maxLength原生 maxlength(截断输入)number-
placeholder占位文本string-
readonly只读booleanfalse
resize是否允许拖拽调整尺寸及方向,可选 none | both | horizontal | vertical | block | inline。autosize 开启时忽略;仅显式传入时生效string-
rows默认行数number4
showClear支持清除booleanfalse
showCount显示字数统计booleanfalse
showLineNumber是否展示行号booleanfalse
style外层容器样式string-
textareaStyletextarea 元素的样式,可用于设置高度等string-
validateStatus校验状态,可选 default、error、warning、successstring‘default’
value输入框内容(受控)string-
onBlur输入框失去焦点时的回调(e: FocusEvent) => void-
onChange输入框内容变化时的回调(value: string, e: Event) => void-
onClear点击清除按钮时的回调(e: MouseEvent) => void-
onEnterPress按下回车的回调(composition 中不触发)(e: KeyboardEvent) => void-
onPressEnteronEnterPress 别名(e: KeyboardEvent) => void-
onFocus输入框 focus 时的回调(e: FocusEvent) => void-
onInput原生 input 事件回调(value: string, e: Event) => void-
onResizeautosize 高度变化,或 resize 拖拽时触发(含 width)(p: { height: number, width?: number }) => void-
onKeyDownkeydown 回调(e: KeyboardEvent) => void-
onKeyPresskeypress 回调(e: KeyboardEvent) => void-
onKeyUpkeyup 回调(e: KeyboardEvent) => void-
onCompositionStartcompositionstart 回调(e: CompositionEvent) => void-
onCompositionEndcompositionend 回调(e: CompositionEvent) => void-
onCompositionUpdatecompositionupdate 回调(e: CompositionEvent) => void-

InputGroup

通用属性将设置到 InputGroup 的子级元素上,例如 disabled 等。如果你在子级设置了 disabled,会覆盖掉 InputGroup 对应属性值。

属性说明类型默认值
class组的类名string-
disabled禁用(回退透传子控件,子控件显式 disabled 优先)boolean-
labelInputGroup 的 label 属性,{ text?, name?, required?, width? }object-
labelPositionlabel 位置,可选 top 或 leftstring‘top’
size输入框大小,large、default、small(回退透传子控件)string-
style组的样式string-
onBlur输入框失去焦点时的回调(e: FocusEvent) => void-
onFocus输入框 focus 时的回调(e: FocusEvent) => void-

Methods

绑定在组件实例上的方法(Input / TextArea),可以通过实例句柄调用实现某些特殊交互。

名称描述
blur()移出焦点
focus()获取焦点(尊重 preventScroll)

无障碍

ARIA

  • 当 validateStatus 为 error 时,输入框的 aria-invalid 为 true。
  • 在 Form 中使用时,field label 是 Input 的 aria-label。
  • 密码显隐切换按钮带 aria-label(走 i18n 文案),可键盘聚焦。
  • 清除按钮走 i18n 文案 aria-label,可键盘聚焦。

键盘和焦点

  • Input / TextArea 可被获取焦点,键盘用户可以使用 Tab 及 Shift + Tab 切换焦点。
  • 密码按钮可以被聚焦,聚焦后使用 Enter 或者空格键激活。
  • 正确处理 IME composition,组合期间不触发 change。

设计变量

变量
默认值
用法
--cd-transition-delay-input-bg var(--cd-motion-delay-none) 输入框-背景色-延迟时间
--cd-transition-delay-input-border var(--cd-motion-delay-none) 输入框-边框-延迟时间
--cd-transition-delay-input-text var(--cd-motion-delay-none) 输入框-文字或图标-延迟时间
--cd-transition-duration-input-bg var(--cd-motion-duration-none) 输入框-背景色-动画持续时间
--cd-transition-duration-input-border var(--cd-motion-duration-none) 输入框-边框-动画持续时间
--cd-transition-duration-input-text var(--cd-motion-duration-none) 输入框-文字或图标-动画持续时间
--cd-transition-function-input-bg var(--cd-motion-ease-in) 输入框-背景色-过渡曲线
--cd-transition-function-input-border var(--cd-motion-ease-in) 输入框-边框-过渡曲线
--cd-transition-function-input-text var(--cd-motion-ease-in) 输入框-文字或图标-过渡曲线
显示第 1 条-第 9 条,共 9 条
  • 1