Lightning Experience, Experience Builder Sites, Salesforce Mobile App, Lightning Out (Beta), Standalone Lightning App, Mobile Offline
A lightning-textarea component creates an HTML textarea element for
entering multi-line text input. A text area holds an unlimited number of
characters.
To set the input for the text area, specify its value using the value attribute. Setting this value overwrites any initial value that’s provided.
This example creates a text area with a maximum length of 300 characters.
1<template>2 <lightning-textarea3 value="initial value"4 label="What are you thinking about?"5 max-length="300"6 >7 </lightning-textarea>8</template>
Design
lightning-textarea implements the textarea blueprint in the Salesforce Lightning Design System (SLDS). The textarea adapts to SLDS 1 or SLDS 2 styling based on the org’s theme or the container app that you use.
In many browsers, the text area is resizable by default, and a vertical scrollbar is displayed when the content exceeds the number of rows. Consider these limitations:
Specifying the rows and cols attributes isn’t supported.
Specifying the CSS width and height properties isn’t supported.
You can define a function in JavaScript to handle input events like
blur, focus, and change. For example, to handle a change event on
the component, use the onchange attribute.
To retrieve the content of the text area field, use event.detail.value property.
1<template>2 <lightning-textarea3 name="myTextArea"4 value="initial value"5 label="What are you thinking about?"6 onchange={countLength}7 >8 </lightning-textarea>9</template>
Input Validation
Client-side input validation is available for this component. Set a maximum
length using the maxlength attribute or a minimum length using the
minlength attribute. An error message is automatically displayed in these cases:
A required field is empty when required is present on the lightning-textarea tag.
The input value contains fewer characters than that specified by the minlength attribute.
The input value contains more characters than that specified by the maxlength attribute.
To check the validity states of an input, use the validity attribute, which
is based on the ValidityState object. You can access the validity states in
your JavaScript. This validity attribute returns an object with
boolean properties. For more information, see the
lightning-input documentation.
You can override the default message by providing your own values for
message-when-value-missing, message-when-bad-input, message-when-too-long, or
message-when-too-short.
For example, provide an error message when a required field’s value is missing.
1<template>2 <lightning-textarea3 name="myText"4 label="Your Name"5 message-when-value-missing="This field is required."6 required7 >8 </lightning-textarea>9</template>
Insert Text Programmatically
You can insert text programmatically in the text area with the setRangeText() method, replacing content
or inserting new content.
The setRangeText() method follows the API of the standard HTMLInputElement.setRangeText() method described on
MDN.
setRangeText() supports these parameters.
Parameter
Type
Description
replacement
string
The string to insert.
start
number
The 0-based index of the first character to replace.
end
number
The 0-based index that follows the last character to replace.
selectMode
string
Defines how the selection is set after the text is inserted.
Valid values for selectMode are:
select - Selects the inserted text. The text area must have focus when setRangeText() is called.
start - Moves the selection to just before the inserted text.
end - Moves the selection to just after the inserted text.
preserve - Attempts to preserve the selection in effect before the insertion. This is the default.
To insert replacement text at the current cursor location, specify only the
replacement string and no other parameters. After the insertion, the cursor
remains in the original location. If text is selected when the insertion occurs,
the text is replaced.
This example uses setRangeText() to insert some text at the beginning of the line
without replacing any content.
Setting the start and end values to 0 begins the insertion with the character at
index 0, but ends at the character before index 0. The result is that no characters are
replaced, and the text is inserted in front of the character at index 0.
The selectMode value select causes the inserted content to be selected. Call the focus()
method before setRangeText() to enable the selection.
1import{LightningElement}from "lwc";23export default class SetRangeTextExample extends LightningElement{4 start = 0;5 end = 0;6 selectMode = "select";78 handleClick(){9 const textarea = this.template.querySelector("lightning-textarea");10 textarea.focus();11 textarea.setRangeText("Some new text", this.start, this.end, this.selectMode);12}13}
This example inserts a space at index 10 and removes characters at index 10 through 14.
The resulting content of the text area is 0123456789 567890.
These examples describe the insertion behavior with various setRangeText()parameter values.
1// Insert text at cursor position. Replace any selected text.2textarea.setRangeText("Some new text");34// Insert text to replace characters beginning at index 10 (the 11th5// character) and ending at index 15 (the 16th character). The character6// at index 14 is the last character replaced.7// No selectMode is specified, so the original selection is preserved.8textarea.setRangeText("Some new text", 10, 15);910// Set focus on the text area.11// Insert text as described in the previous example, and then select12// the new text.13textarea.focus();14textarea.setRangeText("Some new text", 10, 15, "select");1516// Insert text as described, and place cursor ahead of the new text.17textarea.setRangeText("Some new text", 10, 15, "start");1819// Insert text as described, and place cursor after the new text.20textarea.setRangeText("Some new text", 10, 15, "end");2122// Insert text as described, and return to the previous selection state.23textarea.setRangeText("Some new text", 10, 15, "preserve");
If text is selected when selectMode is preserve and start and end values are specified,
the text insertion has no effect on the selected text. The text remains selected and is not replaced.
Autocomplete Support
Textarea fields can be autofilled, based on your browser’s support of the feature.
The autocomplete attribute passes through its value to the browser.
Component styling hooks provide CSS custom properties that use the --slds-c-* prefix and they change styling for specific elements or properties of a component. Component styling hooks are supported for SLDS 1 only. See the SLDS 1 component blueprints for available component styling hooks.
lightning-textarea determines the width of the field using the container’s layout. Providing your own width on the component isn’t recommended as the component is then no longer responsive to the change on the container’s layout, such as when the browser is resized.
End users can resize the text area vertically by default on browsers that support it. You can’t disable resizing using the resize CSS property. End users can’t resize read-only text area fields.
To prevent users from resizing the field more than a specific width or height, pass in your custom class using the class attribute with the max-width and max-height CSS properties. Using these CSS properties on a read-only field isn’t supported.
When working with lightning-textarea, consider these usage guidelines.
Use lightning-textarea component with the disabled or read-only attribute, but not both simultaneously. Applying both disabled and read-only attributes to the component can result in unexpected behavior.
When you specify read-only, the component displays with a bottom border only. The height of the component can’t be changed. Using a styling hook to override the minimum height is also not supported for read-only text area fields. The component determines the height based on the amount of text content in value. Specify read-only if you want to prevent users from modifying the field, but still allow for interaction, which includes being able to tab into the field, place focus and set .focus(), and submit the field value with the form.
When you specify disabled, the text area is grayed out, but you can adjust the height of the text area. Specify disabled to prevent users from interacting with the text area. In a disabled text area, you can’t gain focus or set focus programmatically using .focus(). The disabled field value is excluded from form submission.
The vertical scrollbar is displayed only when lightning-textarea is either disabled or editable, and when the content exceeds the text area’s height. Scrollbars do not appear when read-only property is applied, as height is determined by the amount of text content in value.
Accessibility
Use the label attribute to identify the text area for users of assistive technology.
The label attribute creates an HTML label element on the input element. To hide a
label from view and make it available to assistive technology, use the label-hidden variant.
When the character count provided by maxlength is reached, the component renders an error message
as assistive text with role="alert", which notifies users of assistive technologies that the limit is reached.
Attributes
Name
Description
Type
Default
Required
access-key
The keyboard shortcut for input field.
string
aria-described-by
Aria Described by value on parent lighting-textarea
string
aria-labelled-by
A space-separated list of element IDs that provide labels for the aria-labelled-by value on parent lighting-textarea.
string
autocomplete
Controls auto-filling of the field. Set the attribute to pass through autocomplete values to be interpreted by the browser.
string
disabled
If present, the textarea field is disabled and users cannot interact with it.
boolean
false
field-level-help
The help text that appears in a popover. Set field-level help to provide an informational tooltip on the textarea input field.
label
Text that describes the textarea input field.
string
max-length
The maximum number of characters allowed in the textarea.
number
message-when-bad-input
Error message to be displayed when a bad input is detected.
string
message-when-too-long
Error message to be displayed when the value is too long.
string
message-when-too-short
Error message to be displayed when the value is too short.
string
message-when-value-missing
Error message to be displayed when the value is missing.
string
min-length
The minimum number of characters allowed in the textarea.
number
name
Specifies the name of an input element.
string
placeholder
Text that is displayed when the field is empty, to prompt the user for a valid entry.
string
read-only
If present, the textarea field is read-only and cannot be edited.
boolean
false
required
If present, the textarea field must be filled out before the form can be submitted.
boolean
validity
Represents the validity states of the textarea input, with respect to constraint validation.
object
value
The value of the textarea input, also used as the default value during init.
string
variant
The variant changes the appearance of the textarea. Accepted variants include standard, label-hidden, label-inline, and label-stacked. This value defaults to standard. Use label-hidden to hide the label but make it available to assistive technology. Use label-inline to horizontally align the label and textarea. Use label-stacked to place the label above the textarea.
string
standard
Methods
Name
Description
Argument Name
Argument Type
Argument Description
blur
Removes focus from the textarea field.
checkValidity
Returns the valid attribute value (Boolean) on the ValidityState object.
focus
Sets focus on the textarea field.
reportValidity
Displays the error messages and returns false if the input is invalid. If the input is valid, reportValidity() clears displayed error messages and returns true.
setCustomValidity
Sets a custom error message to be displayed when the textarea value is submitted.
message
string
The string that describes the error. If message is an empty string, the error message is reset.
setRangeText
Replace a range of text in textarea with a new string.
replacement
string
The string to insert.
start
number
The 0-based index of the first character to replace.
end
number
The 0-based index of the character after the last character to replace.
selectMode
string
A string defining how the selection should be set after the text has been replaced. Possible values: 'select': selects the newly inserted text. 'start': moves the selection to just before the inserted text. 'end': moves the selection to just after the inserted text. 'preserve': attempts to preserve the selection. This is the default.
showHelpMessageIfInvalid
Displays error messages on invalid fields. An invalid field fails at least one constraint validation and returns false when checkValidity() is called.