1# 文本输入 2 3 4TextInput、TextArea是输入框组件,通常用于响应用户的输入操作,比如评论区的输入、聊天框的输入、表格的输入等,也可以结合其它组件构建功能页面,例如登录注册页面。具体用法参考[TextInput](../reference/arkui-ts/ts-basic-components-textinput.md)、[TextArea](../reference/arkui-ts/ts-basic-components-textarea.md)。 5 6 7## 创建输入框 8 9TextInput为单行输入框、TextArea为多行输入框。通过以下接口来创建。 10 11 12```ts 13TextArea(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextAreaController}) 14``` 15 16 17 18```ts 19TextInput(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextInputController}) 20``` 21 22 23- 单行输入框 24 25 ```ts 26 TextInput() 27 ``` 28 29 ![zh-cn_image_0000001511580844](figures/zh-cn_image_0000001511580844.png) 30 31 32- 多行输入框 33 34 ```ts 35 TextArea() 36 ``` 37 38 ![zh-cn_image_0000001562940481](figures/zh-cn_image_0000001562940481.png) 39 40 多行输入框文字超出一行时会自动折行。 41 42 43 ```ts 44 TextArea({text:"我是TextArea我是TextArea我是TextArea我是TextArea"}).width(300) 45 ``` 46 47 ![zh-cn_image_0000001511580836](figures/zh-cn_image_0000001511580836.png) 48 49 50## 设置输入框类型 51 52TextInput有5种可选类型,分别为Normal基本输入模式、Password密码输入模式、Email邮箱地址输入模式、Number纯数字输入模式、PhoneNumber电话号码输入模式。通过type属性进行设置: 53 54 55- 基本输入模式(默认类型) 56 57 ```ts 58 TextInput() 59 .type(InputType.Normal) 60 ``` 61 62 ![zh-cn_image_0000001562820765](figures/zh-cn_image_0000001562820765.png) 63 64- 密码输入模式 65 66 ```ts 67 TextInput() 68 .type(InputType.Password) 69 ``` 70 71 ![zh-cn_image_0000001511580840](figures/zh-cn_image_0000001511580840.png) 72 73 74## 自定义样式 75 76- 设置无输入时的提示文本。 77 TextInput({placeholder:'我是提示文本'}) 78 79 80 ```ts 81 TextInput({placeholder:'我是提示文本'}) 82 ``` 83 84 ![zh-cn_image_0000001511900400](figures/zh-cn_image_0000001511900400.png) 85 86 87- 设置输入框当前的文本内容。 88 89 ```ts 90 TextInput({placeholder:'我是提示文本',text:'我是当前文本内容'}) 91 ``` 92 93 ![zh-cn_image_0000001562820761](figures/zh-cn_image_0000001562820761.png) 94 95- 添加backgroundColor改变输入框的背景颜色。 96 97 ```ts 98 TextInput({placeholder:'我是提示文本',text:'我是当前文本内容'}) 99 .backgroundColor(Color.Pink) 100 ``` 101 102 ![zh-cn_image_0000001511740444](figures/zh-cn_image_0000001511740444.png) 103 104 更丰富的样式可以结合[通用属性](../reference/arkui-ts/ts-universal-attributes-size.md)实现。 105 106 107## 添加事件 108 109文本框主要用于获取用户输入的信息,把信息处理成数据进行上传,绑定onChange事件可以获取输入框内改变的内容。用户也可以使用通用事件来进行相应的交互操作。 110 111 112 113```ts 114TextInput() 115 .onChange((value: string) => { 116 console.info(value); 117 }) 118 .onFocus(() => { 119 console.info('获取焦点'); 120 }) 121``` 122 123 124## 场景示例 125 126用于表单的提交,在用户登录/注册页面,用户的登录或注册的输入操作。 127 128 129 130```ts 131@Entry 132@Component 133struct TextInputSample { 134 build() { 135 Column() { 136 TextInput({ placeholder: 'input your username' }).margin({ top: 20 }) 137 .onSubmit((EnterKeyType)=>{ 138 console.info(EnterKeyType+'输入法回车键的类型值') 139 }) 140 TextInput({ placeholder: 'input your password' }).type(InputType.Password).margin({ top: 20 }) 141 .onSubmit((EnterKeyType)=>{ 142 console.info(EnterKeyType+'输入法回车键的类型值') 143 }) 144 Button('Sign in').width(150).margin({ top: 20 }) 145 }.padding(20) 146 } 147} 148``` 149 150 151![zh-cn_image_0000001563060653](figures/zh-cn_image_0000001563060653.png) 152