ion-textarea
The textarea component is used for multi-line text input. A native textarea element is rendered inside of the component. The user experience and interactivity of the textarea component is improved by having control over the native textarea.
Unlike the native textarea element, the Ionic textarea does not support loading its value from the inner content. The textarea value should be set in the value
attribute.
The textarea component accepts the native textarea attributes in addition to the Ionic properties.
Usage
- Angular
- Javascript
- React
- Stencil
- Vue
<!-- Default textarea -->
<ion-textarea></ion-textarea>
<!-- Textarea in an item with a placeholder -->
<ion-item>
<ion-textarea placeholder="Enter more information here..."></ion-textarea>
</ion-item>
<!-- Textarea in an item with a floating label -->
<ion-item>
<ion-label position="floating">Description</ion-label>
<ion-textarea></ion-textarea>
</ion-item>
<!-- Disabled and readonly textarea in an item with a stacked label -->
<ion-item>
<ion-label position="stacked">Summary</ion-label>
<ion-textarea disabled readonly value="Ionic enables developers to build performant, high-quality mobile apps.">
</ion-textarea>
</ion-item>
<!-- Textarea that clears the value on edit -->
<ion-item>
<ion-label>Comment</ion-label>
<ion-textarea clearOnEdit="true"></ion-textarea>
</ion-item>
<!-- Textarea with custom number of rows and cols -->
<ion-item>
<ion-label>Notes</ion-label>
<ion-textarea rows="6" cols="20" placeholder="Enter any notes here..."></ion-textarea>
</ion-item>
<!-- Default textarea -->
<ion-textarea></ion-textarea>
<!-- Textarea in an item with a placeholder -->
<ion-item>
<ion-textarea placeholder="Enter more information here..."></ion-textarea>
</ion-item>
<!-- Textarea in an item with a floating label -->
<ion-item>
<ion-label position="floating">Description</ion-label>
<ion-textarea></ion-textarea>
</ion-item>
<!-- Disabled and readonly textarea in an item with a stacked label -->
<ion-item>
<ion-label position="stacked">Summary</ion-label>
<ion-textarea disabled readonly value="Ionic enables developers to build performant, high-quality mobile apps.">
</ion-textarea>
</ion-item>
<!-- Textarea that clears the value on edit -->
<ion-item>
<ion-label>Comment</ion-label>
<ion-textarea clear-on-edit="true"></ion-textarea>
</ion-item>
<!-- Textarea with custom number of rows and cols -->
<ion-item>
<ion-label>Notes</ion-label>
<ion-textarea rows="6" cols="20" placeholder="Enter any notes here..."></ion-textarea>
</ion-item>
import React, { useState } from 'react';
import {
IonContent,
IonHeader,
IonPage,
IonTitle,
IonToolbar,
IonTextarea,
IonItem,
IonLabel,
IonItemDivider,
IonList,
} from '@ionic/react';
export const TextAreaExamples: React.FC = () => {
const [text, setText] = useState<string>();
return (
<IonPage>
<IonHeader>
<IonToolbar>
<IonTitle>TextArea Examples</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent>
<IonList>
<IonItemDivider>Default textarea</IonItemDivider>
<IonItem>
<IonTextarea value={text} onIonChange={(e) => setText(e.detail.value!)}></IonTextarea>
</IonItem>
<IonItemDivider>Textarea in an item with a placeholder</IonItemDivider>
<IonItem>
<IonTextarea
placeholder="Enter more information here..."
value={text}
onIonChange={(e) => setText(e.detail.value!)}
></IonTextarea>
</IonItem>
<IonItemDivider>Textarea in an item with a floating label</IonItemDivider>
<IonItem>
<IonLabel position="floating">Description</IonLabel>
<IonTextarea value={text} onIonChange={(e) => setText(e.detail.value!)}></IonTextarea>
</IonItem>
<IonItemDivider>Disabled and readonly textarea in an item with a stacked label</IonItemDivider>
<IonItem>
<IonLabel position="stacked">Summary</IonLabel>
<IonTextarea disabled readonly value={text} onIonChange={(e) => setText(e.detail.value!)}></IonTextarea>
</IonItem>
<IonItemDivider>Textarea that clears the value on edit</IonItemDivider>
<IonItem>
<IonLabel>Comment</IonLabel>
<IonTextarea clearOnEdit={true} value={text} onIonChange={(e) => setText(e.detail.value!)}></IonTextarea>
</IonItem>
<IonItemDivider>Textarea with custom number of rows and cols</IonItemDivider>
<IonItem>
<IonLabel>Notes</IonLabel>
<IonTextarea
rows={6}
cols={20}
placeholder="Enter any notes here..."
value={text}
onIonChange={(e) => setText(e.detail.value!)}
></IonTextarea>
</IonItem>
</IonList>
</IonContent>
</IonPage>
);
};
import { Component, h } from '@stencil/core';
@Component({
tag: 'textarea-example',
styleUrl: 'textarea-example.css',
})
export class TextareaExample {
render() {
return [
// Default textarea
<ion-textarea></ion-textarea>,
// Textarea in an item with a placeholder
<ion-item>
<ion-textarea placeholder="Enter more information here..."></ion-textarea>
</ion-item>,
// Textarea in an item with a floating label
<ion-item>
<ion-label position="floating">Description</ion-label>
<ion-textarea></ion-textarea>
</ion-item>,
// Disabled and readonly textarea in an item with a stacked label
<ion-item>
<ion-label position="stacked">Summary</ion-label>
<ion-textarea
disabled
readonly
value="Ionic enables developers to build performant, high-quality mobile apps."
></ion-textarea>
</ion-item>,
// Textarea that clears the value on edit
<ion-item>
<ion-label>Comment</ion-label>
<ion-textarea clearOnEdit={true}></ion-textarea>
</ion-item>,
// Textarea with custom number of rows and cols
<ion-item>
<ion-label>Notes</ion-label>
<ion-textarea rows={6} cols={20} placeholder="Enter any notes here..."></ion-textarea>
</ion-item>,
];
}
}
<template>
<!-- Default textarea -->
<ion-textarea></ion-textarea>
<!-- Textarea in an item with a placeholder -->
<ion-item>
<ion-textarea placeholder="Enter more information here..."></ion-textarea>
</ion-item>
<!-- Textarea in an item with a floating label -->
<ion-item>
<ion-label position="floating">Description</ion-label>
<ion-textarea></ion-textarea>
</ion-item>
<!-- Disabled and readonly textarea in an item with a stacked label -->
<ion-item>
<ion-label position="stacked">Summary</ion-label>
<ion-textarea disabled readonly value="Ionic enables developers to build performant, high-quality mobile apps.">
</ion-textarea>
</ion-item>
<!-- Textarea that clears the value on edit -->
<ion-item>
<ion-label>Comment</ion-label>
<ion-textarea clear-on-edit="true"></ion-textarea>
</ion-item>
<!-- Textarea with custom number of rows and cols -->
<ion-item>
<ion-label>Notes</ion-label>
<ion-textarea rows="6" cols="20" placeholder="Enter any notes here..."></ion-textarea>
</ion-item>
</template>
<script>
import { IonItem, IonLabel, IonTextarea } from '@ionic/vue';
import { defineComponent } from 'vue';
export default defineComponent({
components: { IonItem, IonLabel, IonTextarea },
});
</script>
Properties
autoGrow
Description | If true , the element height will increase based on the value. |
Attribute | auto-grow |
Type | boolean |
Default | false |
autocapitalize
Description | Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. |
Attribute | autocapitalize |
Type | string |
Default | 'none' |
autofocus
Description | この Boolean 属性により、ページロード時にフォームコントロールにInputフォーカスが当たるように指定することができます。 |
Attribute | autofocus |
Type | boolean |
Default | false |
clearOnEdit
Description | true の場合、編集時にフォーカスされた後、値がクリアされる。デフォルトは type が "password" のとき true で、それ以外のときは false です。 |
Attribute | clear-on-edit |
Type | boolean |
Default | false |
color
Description | The color to use from your application's color palette. Default options are: "primary" , "secondary" , "tertiary" , "success" , "warning" , "danger" , "light" , "medium" , and "dark" . For more information on colors, see theming. |
Attribute | color |
Type | string | undefined |
Default | undefined |
cols
Description | テキストコントロールの可視幅を、平均文字幅で指定します。指定する場合は、正の整数である必要があります。 |
Attribute | cols |
Type | number | undefined |
Default | undefined |
debounce
Description | キーを押すたびに ionChange イベントが発生するまでの待ち時間をミリ秒単位で設定します。これは ngModel や v-model などのフォームバインディングにも影響します。 |
Attribute | debounce |
Type | number |
Default | 0 |
disabled
Description | true の場合、ユーザはテキストエリアと対話することができません。 |
Attribute | disabled |
Type | boolean |
Default | false |
enterkeyhint
Description | A hint to the browser for which enter key to display. Possible values: "enter" , "done" , "go" , "next" , "previous" , "search" , and "send" . |
Attribute | enterkeyhint |
Type | "done" | "enter" | "go" | "next" | "previous" | "search" | "send" | undefined |
Default | undefined |
inputmode
Description | A hint to the browser for which keyboard to display. Possible values: "none" , "text" , "tel" , "url" , "email" , "numeric" , "decimal" , and "search" . |
Attribute | inputmode |
Type | "decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined |
Default | undefined |
maxlength
Description | type属性の値が text , email , search , password , tel , または url の場合、この属性はユーザーが入力できる最大文字数を指定します。 |
Attribute | maxlength |
Type | number | undefined |
Default | undefined |
minlength
Description | type属性の値が text , email , search , password , tel , または url の場合、この属性はユーザーが入力できる最小文字数を指定します。 |
Attribute | minlength |
Type | number | undefined |
Default | undefined |
mode
Description | modeは、どのプラットフォームのスタイルを使用するかを決定します。 |
Attribute | mode |
Type | "ios" | "md" |
Default | undefined |
name
Description | フォームデータとともに送信されるコントロールの名前。 |
Attribute | name |
Type | string |
Default | this.inputId |
placeholder
Description | 入力が値を持つ前に表示される指示文。 |
Attribute | placeholder |
Type | null | string | undefined |
Default | undefined |
readonly
Description | true の場合、ユーザーは値を変更することができません。 |
Attribute | readonly |
Type | boolean |
Default | false |
required
Description | true の場合、ユーザーはフォームを送信する前に値を入力する必要があります。 |
Attribute | required |
Type | boolean |
Default | false |
rows
Description | コントロールの可視テキスト行数。 |
Attribute | rows |
Type | number | undefined |
Default | undefined |
spellcheck
Description | true の場合、その要素のスペルチェックと文法チェックが行われる。 |
Attribute | spellcheck |
Type | boolean |
Default | false |
value
Description | textareaの値です。 |
Attribute | value |
Type | null | string | undefined |
Default | '' |
wrap
Description | コントロールがテキストをどのように折り返すかを示します。 |
Attribute | wrap |
Type | "hard" | "off" | "soft" | undefined |
Default | undefined |
Events
Name | Description |
---|---|
ionBlur | Inputのフォーカスが外れたときに発行されます。 |
ionChange | 入力値が変化したときに発行されます。 |
ionFocus | Inputにフォーカスが当たったときに発行されます。 |
ionInput | キーボード入力が発生したときに発行されます。 |
Methods
getInputElement
Description | 要素の内部で使用されるネイティブの <textarea> 要素を返します。 |
Signature | getInputElement() => Promise<HTMLTextAreaElement> |
setFocus
Description | Sets focus on the native textarea in ion-textarea . Use this method instead of the global textarea.focus() . |
Signature | setFocus() => Promise<void> |
CSS Shadow Parts
No CSS shadow parts available for this component.
CSS Custom Properties
Name | Description |
---|---|
--background | textareaの背景 |
--border-radius | テキストエリアの境界半径 |
--color | 本文の色 |
--padding-bottom | テキストエリアのBottom Padding |
--padding-end | テキストエリアの方向が左から右の場合はRight Padding、右から左の場合はLeft Paddingを使用します。 |
--padding-start | textareaの方向が左から右の場合はLeft Padding、右から左の場合はRight Padding。 |
--padding-top | textareaのTop Padding |
--placeholder-color | Placeholderテキストの色 |
--placeholder-font-style | Placeholderテキストのスタイル |
--placeholder-font-weight | Placeholderテキストの重さ |
--placeholder-opacity | Placeholderテキストの不透明度 |
Slots
No slots available for this component.