1# Search 2 3搜索框组件,适用于浏览器的搜索内容输入框等应用场景。 4 5> **说明:** 6> 7> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8 9## 子组件 10 11无 12 13## 接口 14 15Search(options?: { value?: string; placeholder?: string; icon?: string; controller?: SearchController }) 16 17**参数:** 18 19| 参数名 | 参数类型 | 必填 | 参数描述 | 20| ---------- | ---------------- | ---- | ------------------------------------------------------------ | 21| value | string | 否 | 设置当前显示的搜索文本内容。 | 22| icon | string | 否 | 设置搜索图标路径,默认使用系统搜索图标。<br/>图标所支持的图片类型能力参考[Image](ts-basic-components-image.md)组件。 | 23| controller | SearchController | 否 | 设置Search组件控制器。 | 24 25## 属性 26 27除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性: 28 29| 名称 | 参数类型 | 描述 | 30| ----------------------- | ------------------------------------------------ | ---------------------------------------------- | 31| searchButton | string | 搜索框末尾搜索按钮文本内容,默认无搜索按钮。 | 32| placeholderColor | [ResourceColor](ts-types.md#resourcecolor) | 设置placeholder文本颜色。 | 33| placeholderFont | [Font](ts-types.md#font) | 设置placeholder文本样式,包括字体大小,字体粗细,字体族,字体风格。目前仅支持默认字体族。 | 34| textFont | [Font](ts-types.md#font) | 设置搜索框内输入文本样式,包括字体大小,字体粗细,字体族,字体风格。目前仅支持默认字体族。 | 35| textAlign | [TextAlign](ts-appendix-enums.md#textalign) | 设置文本在搜索框中的对齐方式。<br/>默认值:TextAlign.Start | 36| copyOption<sup>9+</sup> | [CopyOptions](ts-appendix-enums.md#copyoptions9) | 设置输入的文本是否可复制。 | 37 38## 事件 39 40除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件: 41 42| 名称 | 功能描述 | 43| ---------------------------------------- | ---------------------------------------- | 44| onSubmit(callback: (value: string) => void) | 点击搜索图标、搜索按钮或者按下软键盘搜索按钮时触发该回调。<br> -value: 当前搜索框中输入的文本内容。 | 45| onChange(callback: (value: string) => void) | 输入内容发生变化时,触发该回调。<br> -value: 当前搜索框中输入的文本内容。 | 46| onCopy(callback: (value: string) => void) | 长按搜索框弹出剪切板之后,点击剪切板的复制按钮触发该回调。<br> -value: 复制的文本内容。 | 47| onCut(callback: (value: string) => void) | 长按搜索框弹出剪切板之后,点击剪切板的剪切按钮触发该回调。<br> -value: 剪切的文本内容。 | 48| onPaste(callback: (value: string) => void) | 长按搜索框弹出剪切板之后,点击剪切板的粘贴按钮触发该回调。<br> -value: 粘贴的文本内容。 | 49 50## SearchController 51 52Search组件的控制器,目前通过它可控制Search组件的光标位置。 53 54### 导入对象 55``` 56controller: SearchController = new SearchController() 57``` 58### caretPosition 59 60caretPosition(value: number): void 61 62设置输入光标的位置。 63 64**参数:** 65 66| 参数名 | 参数类型 | 必填 | 参数描述 | 67| ------ | -------- | ---- | ---------------------------------- | 68| value | number | 是 | 从字符串开始到光标所在位置的长度。 | 69 70## 示例 71 72```ts 73// xxx.ets 74@Entry 75@Component 76struct SearchExample { 77 @State changeValue: string = '' 78 @State submitValue: string = '' 79 controller: SearchController = new SearchController() 80 81 build() { 82 Column() { 83 Text('onSubmit:' + this.submitValue).fontSize(18).margin(15) 84 Text('onChange:' + this.changeValue).fontSize(18).margin(15) 85 Search({ value: this.changeValue, placeholder: 'Type to search...', controller: this.controller }) 86 .searchButton('SEARCH') 87 .width(400) 88 .height(40) 89 .backgroundColor('#F5F5F5') 90 .placeholderColor(Color.Grey) 91 .placeholderFont({ size: 14, weight: 400 }) 92 .textFont({ size: 14, weight: 400 }) 93 .onSubmit((value: string) => { 94 this.submitValue = value 95 }) 96 .onChange((value: string) => { 97 this.changeValue = value 98 }) 99 .margin(20) 100 Button('Set caretPosition 1') 101 .onClick(() => { 102 // 设置光标位置到输入的第一个字符后 103 this.controller.caretPosition(1) 104 }) 105 }.width('100%') 106 } 107} 108``` 109 110![search](figures/search.gif) 111