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

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
5 6 7 8


提供单行文本输入组件。

Z
zengyawen 已提交
9 10

## 权限列表
Z
zengyawen 已提交
11 12 13



Z
zengyawen 已提交
14 15

## 子组件
Z
zengyawen 已提交
16 17 18



Z
zengyawen 已提交
19 20 21 22 23 24 25 26 27 28 29 30 31

## 接口

TextInput(value?:{placeholder?: string controller?: TextInputController})

- 参数
  | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
  | -------- | -------- | -------- | -------- | -------- |
  | placeholder | string | 否 | - | 无输入时的提示文本。 |
  | controller<sup>8+</sup> | [TextInputController](#textinputcontroller8+) | 否 | - | 设置TextInput控制器。 |


## 属性
Z
zengyawen 已提交
32 33 34

除支持[通用属性](ts-universal-attributes.md)外,还支持以下属性:

Z
zengyawen 已提交
35 36 37 38 39 40 41 42
| 名称 | 参数类型 | 默认值 | 描述 |
| -------- | -------- | -------- | -------- |
| type | InputType | InputType.Normal | 设置输入框类型。 |
| placeholderColor | Color | - | 设置placeholder颜色。 |
| placeholderFont | {<br/>size?:&nbsp;Length,<br/>weight?:&nbsp;number\|[FontWeight](ts-universal-attributes-text-style.md),<br/>family?:&nbsp;string,<br/>style?:&nbsp;[FontStyle](ts-universal-attributes-text-style.md)<br/>} | - | 设置placeholder文本样式:<br/>-&nbsp;size:&nbsp;设置文本尺寸,Length为number类型时,使用fp单位。<br/>-&nbsp;weight:&nbsp;设置文本的字体粗细,number类型取值[100,&nbsp;900],取值间隔为100,默认为400,取值越大,字体越粗。<br/>-&nbsp;family:&nbsp;设置文本的字体列表。使用多个字体,使用','进行分割,优先级按顺序生效。例如:'Arial,&nbsp;sans-serif'。<br/>-&nbsp;style:&nbsp;设置文本的字体样式。 |
| enterKeyType | EnterKeyType                                                 | EnterKeyType.Done | 设置输入法回车键类型。 |
| caretColor | Color | - | 设置输入框光标颜色。 |
| maxLength<sup>8+</sup> | number | - | 设置文本的最大输入字符数。 |
43
| inputFilter<sup>8+</sup> | {<br/>value:&nbsp;[ResourceStr](../../ui/ts-types.md)<sup>8+</sup>,<br/>error?:&nbsp;(value:&nbsp;string)<br/>} | - | 正则表达式,满足表达式的输入允许显示,不满足正则表达式的输入被忽略。仅支持单个字符匹配,不支持字符串匹配。例如:^(?=.\*\d)(?=.\*[a-z])(?=.\*[A-Z]).{8,10}$,8到10位的强密码不支持过滤。<br/>-&nbsp;value:设置正则表达式。<br/>-&nbsp;error:正则匹配失败时,返回被忽略的内容。 |
Z
zengyawen 已提交
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 71 72 73 74

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

- InputType枚举说明
  | 名称 | 描述 | 
  | -------- | -------- |
  | InputType.Normal | 基本输入模式。 | 
  | InputType.Password | 密码输入模式。 | 
  | InputType.Email | e-mail地址输入模式。 | 
  | InputType.Number | 纯数字输入模式。 | 


### TextInputController<sup>8+</sup>

TextInput组件的控制器,通过它操作TextInput组件。

| 接口名称 | 功能描述 | 
| -------- | -------- |
| caretPosition(value:&nbsp;number):void | 设置输入光标的位置。<br/>value:从字符串开始到光标所在位置的字符长度。 | 


## 事件

| 名称 | 功能描述 | 
75
| -------- | -------- |
Z
zengyawen 已提交
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| onChange(value:&nbsp;string)&nbsp;=&gt;&nbsp;void | 输入发生变化时,触发回调。 | 
| onSubmit(callback:&nbsp;(enterKey:&nbsp;EnterKeyType)&nbsp;=&gt;&nbsp;void) | 回车键或者软键盘回车键触发该回调,参数为当前软键盘回车键类型。 | 
| onEditChanged(callback:&nbsp;(isEditing:&nbsp;boolean)&nbsp;=&gt;&nbsp;void) | 输入状态变化时,触发回调。 | 
| 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:粘贴的文本内容。 | 


## 示例


### 单行文本输入

```
@Entry
@Component
struct TextAreaExample2 {
  @State text: string = ''

  build() {
    Column() {
      TextArea({ placeholder: 'input your word' })
        .placeholderColor("rgb(0,0,225)")
        .placeholderFont({ size: 30, weight: 100, family: 'cursive', style: FontStyle.Italic })
        .textAlign(TextAlign.Center)
        .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 已提交
122 123 124 125 126 127

```
@Entry
@Component
struct TextInputTest {
    @State text: string = ''
Z
zengyawen 已提交
128
    controller: TextInputController = new TextInputController()
Z
zengyawen 已提交
129
    build() {
Z
zengyawen 已提交
130 131 132 133 134 135
        Column() {
            TextInput({ placeholder: 'Please input your words.', controller:this.controller})
            Button('caretPosition')
                .onClick(() => {
                this.controller.caretPosition(4)
            })
Z
zengyawen 已提交
136 137 138 139 140
        }
    }
}
```

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