Back to Element Plus

Input

docs/en-US/component/input.md

2.13.724.7 KB
Original Source

Input

Input data using mouse or keyboard.

Basic usage

:::demo

input/basic

:::

Disabled

:::demo Disable the Input with the disabled attribute.

input/disabled

:::

Clearable

:::demo Make the Input clearable with the clearable attribute. After version ^(2.13.4), the clearable feature is also available for textarea type of Input.

input/clearable

:::

Custom Clear Icon ^(2.11.0)

:::demo You can customize the clear icon by setting the clear-icon attribute.

input/clear-icon

:::

Formatter

Display value within it's situation with formatter, and we usually use parser at the same time.

:::demo

input/formatter

:::

Password box

:::demo Make a toggle-able password Input with the show-password attribute. Since ^(2.13.6), the password-icon slot is supported to override the default icon.

input/password

:::

Input with icon

Add an icon to indicate input type.

:::demo To add icons in Input, you can simply use prefix-icon and suffix-icon attributes. Also, the prefix and suffix named slots works as well.

input/with-icon

:::

Textarea

Resizable for entering multiple lines of text information. Add attribute type="textarea" to change input into native textarea.

:::demo Control the height by setting the rows prop.

input/textarea

:::

Autosize Textarea

Setting the autosize prop for a textarea type of Input makes the height to automatically adjust based on the content. An options object can be provided to autosize to specify the minimum and maximum number of lines the textarea can automatically adjust.

:::demo

input/auto-sizing-textarea

:::

Mixed input

Prepend or append an element, generally a label or a button.

:::demo Use slot to distribute elements that prepend or append to Input.

input/mixed-input

:::

Sizes

:::demo Add size attribute to change the size of Input. In addition to the default size, there are two other options: large, small.

input/various-size

:::

Limit length

:::demo maxlength and minlength attributes of input, they declare a limit on the number of characters a user can input. The "number of characters" is measured using JavaScript string length.Setting the maxlength prop for a text or textarea type of Input can limit the length of input value, allows you to show word count by setting show-word-limit to true at the same time. In ^(2.11.5), You can set word-limit-position to outside to display the word count outside the input.

input/length-limiting

:::

Count graphemes ^(2.13.7)

:::demo Set count-graphemes to calculate text length. If it's set, native maxlength and minlength won't be used.

input/count-graphemes

:::

:::tip

Browser Support & Fallback Strategy

When using the count-graphemes prop, the component employs the following approach:

  • Primary: Uses Intl.Segmenter API (Chrome 87+, Firefox 125+, Safari 14.1+) for proper grapheme cluster handling. This correctly handles complex emoji, combining marks, and Zero Width Joiner sequences.

  • Fallback: Older browsers fall back to Array.from() for code-point based iteration. Note that this may split multi-codepoint grapheme sequences (e.g., emoji with skin tone modifiers).

When implementing your own count-graphemes function, consider using Intl.Segmenter if you need robust support for complex unicode characters.

:::

API

Attributes

NameDescriptionTypeDefault
typetype of input, see more in MDN^[string]'text' | 'textarea' | 'number' | 'password' | 'email' | 'search' | 'tel' | 'url'text
model-value / v-modelbinding value^[string] / ^[number]
model-modifiers ^(2.11.5)v-model modifiers, reference Vue modifiers^[object]{ lazy?: true, number?: true, trim?: true }
maxlengthsame as maxlength in native input^[string] / ^[number]
minlengthsame as minlength in native input^[string] / ^[number]
show-word-limitwhether show word count, only works when type is 'text' or 'textarea'^[boolean]false
word-limit-position ^(2.11.5)word count position, valid when show-word-limit is true^[enum]'inside' | 'outside'"inside"
placeholderplaceholder of Input^[string]
clearablewhether to show clear button, only works when type is not 'textarea'^[boolean]false
clear-icon ^(2.11.0)custom clear icon component^[string] / ^[object]ComponentCircleClose
formatterspecifies the format of the value presented input.(only works when type is 'text')^[Function](value: string | number) => string
parserspecifies the value extracted from formatter input.(only works when type is 'text')^[Function](value: string) => string
show-passwordwhether to show toggleable password input^[boolean]false
disabledwhether Input is disabled^[boolean]false
sizesize of Input, works when type is not 'textarea'^[enum]'large' | 'default' | 'small'
prefix-iconprefix icon component^[string] / ^[Component]
suffix-iconsuffix icon component^[string] / ^[Component]
rowsnumber of rows of textarea, only works when type is 'textarea'^[number]2
autosizewhether textarea has an adaptive height, only works when type is 'textarea'. Can accept an object, e.g. { minRows: 2, maxRows: 6 }^[boolean] / ^[object]{ minRows?: number, maxRows?: number }false
autocompletesame as autocomplete in native input^[string]off
namesame as name in native input^[string]
readonlysame as readonly in native input^[boolean]false
maxsame as max in native input
minsame as min in native input
stepsame as step in native input
resizecontrol the resizability^[enum]'none' | 'both' | 'horizontal' | 'vertical'
autofocussame as autofocus in native input^[boolean]false
formsame as form in native inputstring
aria-label ^(a11y) ^(2.7.2)same as aria-label in native input^[string]
tabindexinput tabindex^[string] / ^[number]
validate-eventwhether to trigger form validation^[boolean]true
input-stylethe style of the input element or textarea element^[string] / ^[object]CSSProperties | CSSProperties[] | string[]{}
label ^(a11y) ^(deprecated)same as aria-label in native input^[string]
inputmode ^(2.10.3)same as inputmode in native input^[string]
count-graphemes ^(2.13.7)custom function to count graphemes; when set, native maxlength/minlength constraints are bypassed. Component uses Intl.Segmenter (Chrome 87+, Firefox 125+, Safari 14.1+) for proper grapheme clustering; older browsers fall back to Array.from() for code-point iteration^[Function](value: string) => number

Events

NameDescriptionType
blurtriggers when Input blurs^[Function](event: FocusEvent) => void
focustriggers when Input focuses^[Function](event: FocusEvent) => void
changetriggers when the input box loses focus or the user presses Enter, only if the modelValue has changed^[Function](value: string | number, evt?: Event) => void
inputtriggers when the Input value change^[Function](value: string | number) => void
cleartriggers when the Input is cleared by clicking the clear button^[Function](evt?: MouseEvent) => void (After version 2.13.4, the evt parameter can be received)
keydowntriggers when a key is pressed down^[Function](event: KeyboardEvent | Event) => void
mouseleavetriggers when the mouse leaves the Input element^[Function](event: MouseEvent) => void
mouseentertriggers when the mouse enters the Input element^[Function](event: MouseEvent) => void
compositionstarttriggers when the composition starts^[Function](event: CompositionEvent) => void
compositionupdatetriggers when the composition is updated^[Function](event: CompositionEvent) => void
compositionendtriggers when the composition ends^[Function](event: CompositionEvent) => void

Slots

NameDescription
prefixcontent as Input prefix, only works when type is not 'textarea'
suffixcontent as Input suffix, only works when type is not 'textarea'
prependcontent to prepend before Input, only works when type is not 'textarea'
appendcontent to append after Input, only works when type is not 'textarea'
password-icon ^(2.13.6)content as Input password icon, only works when show-password is true. The scope variable is { visible: boolean }

Exposes

NameDescriptionType
blurblur the input element^[Function]() => void
clearclear input value^[Function]() => void
focusfocus the input element^[Function]() => void
inputHTML input element^[object]Ref<HTMLInputElement>
refHTML element, input or textarea^[object]Ref<HTMLInputElement | HTMLTextAreaElement>
resizeTextarearesize textarea^[Function]() => void
selectselect the text in input element^[Function]() => void
textareaHTML textarea element^[object]Ref<HTMLTextAreaElement>
textareaStylestyle of textarea^[object]Ref<StyleValue>
isComposing ^(2.8.0)is input composing^[object]Ref<boolean>
passwordVisible ^(2.13.7)whether the password is visible^[object]Ref<boolean>

FAQ

Why is the width of the ElInput component expanded by clearable?

Typical issue: #7287

PS: Since the ElInput component does not have a default width, when the clearable icon is displayed, the width of the component will be expanded, which can be solved by setting width.

vue
<el-input v-model="input" clearable style="width: 200px" />