ts-basic-components-textinput.md 7.1 KB
Newer Older
Z
zengyawen 已提交
1 2
# TextInput

T
explain  
tianyu 已提交
3 4
可以输入单行文本并支持响应输入事件的组件。

H
geshi  
HelloCrease 已提交
5
>  **说明:**
G
gmy 已提交
6 7
>
>  该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
8

Z
zengyawen 已提交
9 10

## 子组件
Z
zengyawen 已提交
11 12 13



Z
zengyawen 已提交
14 15 16

## 接口

K
kangchongtao 已提交
17
TextInput(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextInputController})
Z
zengyawen 已提交
18

G
gmy 已提交
19
**参数:**
G
gmy 已提交
20 21 22

| 参数名                     | 参数类型                                     | 必填   | 参数描述            |
| ----------------------- | ---------------------------------------- | ---- | --------------- |
L
fix doc  
luoying_ace_admin 已提交
23 24
| placeholder   | [ResourceStr](ts-types.md#resourcestr)       | 否    | 无输入时的提示文本。      |
| text          | [ResourceStr](ts-types.md#resourcestr)       | 否    | 设置输入框当前的文本内容。     |
G
gmy 已提交
25
| controller<sup>8+</sup> | [TextInputController](#textinputcontroller8) | 否    | 设置TextInput控制器。 |
Z
zengyawen 已提交
26 27 28


## 属性
Z
zengyawen 已提交
29

G
gmy 已提交
30
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
Z
zengyawen 已提交
31

G
gmy 已提交
32 33
| 名称                       | 参数类型                                     | 描述                                       |
| ------------------------ | ---------------------------------------- | ---------------------------------------- |
G
gmy 已提交
34
| type                     | InputType                                | 设置输入框类型。<br/>默认值:InputType.Normal        |
H
HelloCrease 已提交
35 36
| placeholderColor         | [ResourceColor](ts-types.md)     | 设置placeholder颜色。|
| placeholderFont          | [Font](ts-types.md#font) | 设置placeholder文本样式。 |
G
gmy 已提交
37
| enterKeyType             | EnterKeyType                             | 设置输入法回车键类型。<br/>默认值:EnterKeyType.Done    |
H
HelloCrease 已提交
38
| caretColor               | [ResourceColor](ts-types.md)    | 设置输入框光标颜色。                               |
G
gmy 已提交
39
| maxLength                | number                                   | 设置文本的最大输入字符数。                            |
L
fix doc  
luoying_ace_admin 已提交
40
| inputFilter<sup>8+</sup>      | {<br/>value:&nbsp;[ResourceStr](ts-types.md#resourcestr),<br/>error?:&nbsp;(value:&nbsp;string)&nbsp;=&gt;&nbsp;void<br/>} | 正则表达式,满足表达式的输入允许显示,不满足正则表达式的输入被忽略。仅支持单个字符匹配,不支持字符串匹配。例如:^(?=.\*\d)(?=.\*[a-z])(?=.\*[A-Z]).{8,10}$,8到10位的强密码不支持过滤。<br/>-&nbsp;value:设置正则表达式。<br/>-&nbsp;error:正则匹配失败时,返回被忽略的内容。 |
G
gmy 已提交
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| copyOption<sup>9+</sup> | [CopyOptions](ts-appendix-enums.md#copyoptions9) | 设置文本是否可复制。 |
| showPasswordIcon<sup>9+</sup> | boolean | 密码输入模式时,密码框末尾的图标是否显示。<br/>默认值:true |
| style<sup>9+</sup> | TextInputStyle | TextInput风格。<br/>默认值:TextInputStyle.Default |

## EnterKeyType枚举说明

| 名称                  | 描述        |
| ------------------- | --------- |
| Go     | 显示Go文本。   |
| Search | 显示为搜索样式。  |
| Send   | 显示为发送样式。  |
| Next   | 显示为下一个样式。 |
| Done   | 标准样式。     |

## InputType枚举说明

| 名称                 | 描述            |
| ------------------ | ------------- |
| Normal   | 基本输入模式。<br/>支持输入数字、字母、下划线、空格、特殊字符。 |
| Password | 密码输入模式。       |
| Email    | e-mail地址输入模式。 |
| Number   | 纯数字输入模式。      |
| PhoneNumber<sup>9+</sup> | 电话号码输入模式。<br/>支持输入数字、+ 、-、*、#,长度不限。 |

## TextInputStyle枚举说明

| 名称                 | 描述            |
| ------------------ | ------------- |
| Default   | 默认风格,光标宽1.5vp,光标高度和字体大小高度相关,字体越大光标越高。       |
| Inline | 内联输入风格。文字选中时底板与输入框同高。      |
Z
zengyawen 已提交
71

72 73
## 事件

H
HelloCrease 已提交
74 75
| 名称                                       | 功能描述                                     |
| ---------------------------------------- | ---------------------------------------- |
K
kangchongtao 已提交
76
| onChange(callback:&nbsp;(value:&nbsp;string)&nbsp;=&gt;&nbsp;void) | 输入发生变化时,触发回调。              |
H
HelloCrease 已提交
77 78 79 80 81 82
| onSubmit(callback:&nbsp;(enterKey:&nbsp;EnterKeyType)&nbsp;=&gt;&nbsp;void) | 回车键或者软键盘回车键触发该回调,参数为当前软键盘回车键类型。          |
| onEditChanged(callback:&nbsp;(isEditing:&nbsp;boolean)&nbsp;=&gt;&nbsp;void)<sup>(deprecated) </sup> | 输入状态变化时,触发回调。                            |
| onEditChange(callback:&nbsp;(isEditing:&nbsp;boolean)&nbsp;=&gt;&nbsp;void) <sup>8+</sup> | 输入状态变化时,触发回调。                            |
| onCopy<sup>8+</sup>(callback:(value:&nbsp;string)&nbsp;=&gt;&nbsp;void) | 长按输入框内部区域弹出剪贴板后,点击剪切板复制按钮,触发回调。<br/>value:复制的文本内容。 |
| onCut<sup>8+</sup>(callback:(value:&nbsp;string)&nbsp;=&gt;&nbsp;void) | 长按输入框内部区域弹出剪贴板后,点击剪切板剪切按钮,触发回调。<br/>value:剪切的文本内容。 |
| onPaste<sup>8+</sup>(callback:(value:&nbsp;string)&nbsp;=&gt;&nbsp;void) | 长按输入框内部区域弹出剪贴板后,点击剪切板粘贴按钮,触发回调。<br/>value:粘贴的文本内容。 |
83

G
gmy 已提交
84
## TextInputController<sup>8+</sup>
Z
zengyawen 已提交
85

Y
yaoyuchi 已提交
86
TextInput组件的控制器。
Z
zengyawen 已提交
87

G
gmy 已提交
88
### 导入对象
Y
yaoyuchi 已提交
89 90 91
```
controller: TextInputController = new TextInputController()
```
G
gmy 已提交
92
### caretPosition
Y
yaoyuchi 已提交
93 94 95

caretPosition(value:&nbsp;number): void

96
设置输入光标的位置。
Y
yaoyuchi 已提交
97

G
gmy 已提交
98 99 100 101 102
**参数:**

| 参数名 | 参数类型 | 必填 | 参数描述                               |
| ------ | -------- | ---- | -------------------------------------- |
| value  | number   | 是   | 从字符串开始到光标所在位置的字符长度。 |
Z
zengyawen 已提交
103 104 105 106 107 108 109


## 示例


### 单行文本输入

H
geshi  
HelloCrease 已提交
110 111
```ts
// xxx.ets
Z
zengyawen 已提交
112 113
@Entry
@Component
H
HelloCrease 已提交
114
struct TextInputExample1 {
Z
zengyawen 已提交
115 116 117 118
  @State text: string = ''

  build() {
    Column() {
T
tianyu 已提交
119
      TextInput({ placeholder: 'input your word' })
Z
zengyawen 已提交
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
        .placeholderColor("rgb(0,0,225)")
        .placeholderFont({ size: 30, weight: 100, family: 'cursive', style: FontStyle.Italic })
        .caretColor(Color.Blue)
        .height(50)
        .fontSize(30)
        .fontWeight(FontWeight.Bold)
        .fontFamily("sans-serif")
        .fontStyle(FontStyle.Normal)
        .fontColor(Color.Red)
        .onChange((value: string) => {
          this.text = value
        })
      Text(this.text).width('90%')
    }
  }
}
```


![zh-cn_image_0000001252769643](figures/zh-cn_image_0000001252769643.gif)


### 设置光标
Z
zengyawen 已提交
143

H
geshi  
HelloCrease 已提交
144 145
```ts
// xxx.ets
Z
zengyawen 已提交
146 147
@Entry
@Component
H
HelloCrease 已提交
148
struct TextInputExample2 {
Z
zengyawen 已提交
149
    @State text: string = ''
Z
zengyawen 已提交
150
    controller: TextInputController = new TextInputController()
Z
zengyawen 已提交
151
    build() {
Z
zengyawen 已提交
152 153 154 155 156 157
        Column() {
            TextInput({ placeholder: 'Please input your words.', controller:this.controller})
            Button('caretPosition')
                .onClick(() => {
                this.controller.caretPosition(4)
            })
Z
zengyawen 已提交
158 159 160 161 162
        }
    }
}
```

Z
zengyawen 已提交
163
![zh-cn_image_0000001208256092](figures/zh-cn_image_0000001208256092.png)