1e41f4b71Sopenharmony_ci# Text Input (TextInput/TextArea) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ciThe **TextInput** and **TextArea** components are input components typically used to accept input from the user, such as comments, chat messages, and table content. They can be used in combination with other components to meet more diversified purposes, for example, login and registration. For details, see [TextInput](../reference/apis-arkui/arkui-ts/ts-basic-components-textinput.md) and [TextArea](../reference/apis-arkui/arkui-ts/ts-basic-components-textarea.md). 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci## Creating a Text Box 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciThe **TextInput** component provides single-line text input, while the **TextArea** component provides multi-line text input. To create these components, use the following APIs: 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci```ts 12e41f4b71Sopenharmony_ciTextInput(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextInputController}) 13e41f4b71Sopenharmony_ci``` 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci```ts 16e41f4b71Sopenharmony_ciTextArea(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextAreaController}) 17e41f4b71Sopenharmony_ci``` 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci- Single-line text box 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci ```ts 22e41f4b71Sopenharmony_ci TextInput() 23e41f4b71Sopenharmony_ci ``` 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci  26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci- Multi-line text box 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci ```ts 31e41f4b71Sopenharmony_ci TextArea() 32e41f4b71Sopenharmony_ci ``` 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci  35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci The **TextArea** component automatically wraps text so that each line does not have more than the width of the component. 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci ```ts 40e41f4b71Sopenharmony_ci TextArea({text:"I am TextArea I am TextArea I am TextArea"}).width(300) 41e41f4b71Sopenharmony_ci ``` 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci  44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci## Setting the Input Box Type 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ciThe **TextInput** component comes in nine types. You can specify its type by setting the **type** parameter to any of the following: **Normal**, **Password**, **Email**, **Number**, **PhoneNumber**, **USER_NAME**, **NEW_PASSWORD**, **NUMBER_PASSWORD**,<!--Del--> **SCREEN_LOCK_PASSWORD**,<!--DelEnd--> and **NUMBER_DECIMAL**. 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci- Normal type (default type) 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ci ```ts 54e41f4b71Sopenharmony_ci TextInput() 55e41f4b71Sopenharmony_ci .type(InputType.Normal) 56e41f4b71Sopenharmony_ci ``` 57e41f4b71Sopenharmony_ci 58e41f4b71Sopenharmony_ci  59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci- Password type 61e41f4b71Sopenharmony_ci 62e41f4b71Sopenharmony_ci ```ts 63e41f4b71Sopenharmony_ci TextInput() 64e41f4b71Sopenharmony_ci .type(InputType.Password) 65e41f4b71Sopenharmony_ci ``` 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ci  68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci## Setting Styles 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci- Set the placeholder text displayed when there is no input. 73e41f4b71Sopenharmony_ci TextInput({placeholder:'I am placeholder text'}) 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci ```ts 77e41f4b71Sopenharmony_ci TextInput({placeholder:'I am placeholder text'}) 78e41f4b71Sopenharmony_ci ``` 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci  81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci- Set the current text input. 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci ```ts 86e41f4b71Sopenharmony_ci TextInput({placeholder:'I am placeholder text',text:'I am current text input'}) 87e41f4b71Sopenharmony_ci ``` 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci  90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci- Use **backgroundColor** to set the background color of the text box. 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci ```ts 94e41f4b71Sopenharmony_ci TextInput({placeholder:'I am placeholder text',text:'I am current text input'}) 95e41f4b71Sopenharmony_ci .backgroundColor(Color.Pink) 96e41f4b71Sopenharmony_ci ``` 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci  99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci More styles can be implemented by leveraging the [universal attributes](../reference/apis-arkui/arkui-ts/ts-universal-attributes-size.md). 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci## Adding Events 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ciYou can add the **onChange** event for the text box to obtain its content changes. You can also add the universal events to implement user interactions. 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci```ts 108e41f4b71Sopenharmony_ciTextInput() 109e41f4b71Sopenharmony_ci .onChange((value: string) => { 110e41f4b71Sopenharmony_ci console.info(value); 111e41f4b71Sopenharmony_ci }) 112e41f4b71Sopenharmony_ci .onFocus(() => { 113e41f4b71Sopenharmony_ci console.info ('Get Focus'); 114e41f4b71Sopenharmony_ci }) 115e41f4b71Sopenharmony_ci``` 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci## Example Scenario 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ciIn this example, the text box is used to submit forms on the user login or registration page. 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci```ts 122e41f4b71Sopenharmony_ci@Entry 123e41f4b71Sopenharmony_ci@Component 124e41f4b71Sopenharmony_cistruct TextInputSample { 125e41f4b71Sopenharmony_ci build() { 126e41f4b71Sopenharmony_ci Column() { 127e41f4b71Sopenharmony_ci TextInput({ placeholder: 'input your username' }).margin({ top: 20 }) 128e41f4b71Sopenharmony_ci .onSubmit((EnterKeyType)=>{ 129e41f4b71Sopenharmony_ci console.info(EnterKeyType+'Enter key type') 130e41f4b71Sopenharmony_ci }) 131e41f4b71Sopenharmony_ci TextInput({ placeholder: 'input your password' }).type(InputType.Password).margin({ top: 20 }) 132e41f4b71Sopenharmony_ci .onSubmit((EnterKeyType)=>{ 133e41f4b71Sopenharmony_ci console.info(EnterKeyType+'Enter key type') 134e41f4b71Sopenharmony_ci }) 135e41f4b71Sopenharmony_ci Button('Sign in').width(150).margin({ top: 20 }) 136e41f4b71Sopenharmony_ci }.padding(20) 137e41f4b71Sopenharmony_ci } 138e41f4b71Sopenharmony_ci} 139e41f4b71Sopenharmony_ci``` 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci## Keyboard Avoidance 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ciAfter the keyboard is raised, scrollable container components will only activate the keyboard avoidance feature when switching between landscape and portrait modes. To enable keyboard avoidance for non-scrollable container components, nest them within a scrollable container component, such as [Scroll](../reference/apis-arkui/arkui-ts/ts-container-scroll.md), [List](../reference/apis-arkui/arkui-ts/ts-container-list.md), or [Grid](../reference/apis-arkui/arkui-ts/ts-container-grid.md). 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci```ts 148e41f4b71Sopenharmony_ci// xxx.ets 149e41f4b71Sopenharmony_ci@Entry 150e41f4b71Sopenharmony_ci@Component 151e41f4b71Sopenharmony_cistruct Index { 152e41f4b71Sopenharmony_ci placeHolderArr: string[] = ['1', '2', '3', '4', '5', '6', '7'] 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci build() { 155e41f4b71Sopenharmony_ci Scroll() { 156e41f4b71Sopenharmony_ci Column() { 157e41f4b71Sopenharmony_ci ForEach(this.placeHolderArr, (placeholder: string) => { 158e41f4b71Sopenharmony_ci TextInput({ placeholder: 'TextInput ' + placeholder }) 159e41f4b71Sopenharmony_ci .margin(30) 160e41f4b71Sopenharmony_ci }) 161e41f4b71Sopenharmony_ci } 162e41f4b71Sopenharmony_ci } 163e41f4b71Sopenharmony_ci .height('100%') 164e41f4b71Sopenharmony_ci .width('100%') 165e41f4b71Sopenharmony_ci } 166e41f4b71Sopenharmony_ci} 167e41f4b71Sopenharmony_ci``` 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci 171