适用于长文本输入的场景,基于微信小程序的 textarea 组件开发。
示例图


基础用法
页面 .json 文件 usingComponents 中引入组件
// json
{
"usingComponents": {
"mx-textarea": "/components/mxwui/textarea/index"
}
}页面 .wxml 文件中使用组件
<mx-textarea bind:textarea_change="textareaChange" />更多用法示例
文本域样式类型 styleType
属性:styleType,可选 normal、web,默认 normal。
- 样式一
normal
<mx-textarea />
<mx-textarea styleType="normal" />- 样式二
web
<mx-textarea styleType="web" />内容 value
属性:value,初始化或输入后内容。
<mx-textarea value="123ABCabc内容" />文本颜色 textColor
属性:textColor,默认 #040A23,支持任何合法的颜色值。
<mx-textarea textColor="#1677FF" />占位文本 placeholder
属性:placeholder,默认 请输入。
<mx-textarea placeholder="请输入内容" />占位文本色 placeholderColor
属性:placeholderColor,默认 #9AA0B1,支持任何合法的颜色值。
<mx-textarea placeholderColor="#1677FF" />背景色 bgColor
属性:bgColor,默认 #FFFFFF,支持任何合法的颜色值。
<mx-textarea bgColor="#1677FF" />是否禁用 disabled
属性:disabled,可选 true、false,默认 false 不禁用。
- 禁用
<mx-textarea disabled />
<mx-textarea disabled="{{true}}" />- 不禁用
<mx-textarea />
<mx-textarea disabled="{{false}}" />最大输入长度 maxLength
属性:maxLength,默认 140,数字。
设置为 -1 的时候不限制最大长度。
<mx-textarea maxLength="10" />是否显示字数限制 showLimit
属性:showLimit,可选 true、false,默认 true。
需要配合 maxLength 使用,如果 maxLength 值设为 -1,则最大字符显示 999
- 显示字符数限制
<mx-textarea />
<mx-textarea showLimit />
<mx-textarea showLimit="{{true}}" />- 不显示字符数限制
<mx-textarea showLimit="{{false}}" />自动聚焦 autoFocus
属性:autoFocus,可选 true、false,默认 false。
- 不自动聚焦
<mx-textarea />
<mx-textarea autoFocus="{{false}}" />- 自动聚焦
<mx-textarea autoFocus />
<mx-textarea autoFocus="{{true}}" />是否自动增高 autoHeight
属性:autoHeight,可选 true、false,默认 false。
- 不自动增高
<mx-textarea />
<mx-textarea autoHeight="{{false}}" />- 自动增高
<mx-textarea autoHeight />
<mx-textarea autoHeight="{{true}}" />自定义高度 height
属性:height,默认 120,数字,不带单位,使用rpx。
默认高度大概在 2 行左右。
字段 autoHeight 设为 true 时,自定义高度无效。
<mx-textarea height="140" />指定光标与键盘的距离 cursorSpacing
属性:cursorSpacing,默认 0,数字。
<mx-textarea cursorSpacing="0" />指定focus时的光标位置 cursor
属性:cursor,默认 -1,数字。
<mx-textarea cursor="10" />光标起始位置 selectionStart
属性:selectionStart,默认 -1,数字。
自动聚集时有效,需与 selectionEnd 搭配使用。
<mx-textarea selectionStart="-1" />光标结束位置 selectionEnd
属性:selectionEnd,默认 -1,数字。
自动聚集时有效,需与 selectionStart 搭配使用。
<mx-textarea selectionEnd="-1" />键盘弹起时,是否自动上推页面 adjustPosition
属性:adjustPosition,可选 true、false,默认 true。
- 自动上推
<mx-textarea />
<mx-textarea adjustPosition />
<mx-textarea adjustPosition="{{true}}" />- 不上推
<mx-textarea adjustPosition="{{false}}" />focus时,点击页面的时候不收起键盘 holdKeyboard
属性:holdKeyboard,可选 true、false,默认 false。
- 收起键盘
<mx-textarea holdKeyboard />
<mx-textarea holdKeyboard="{{true}}" />- 不收起键盘
<mx-textarea />
<mx-textarea holdKeyboard="{{false}}" />是否去掉 iOS 下的默认内边距 disableDefaultPadding
属性:disableDefaultPadding,可选 true、false,默认 true。
- 去掉
<mx-textarea />
<mx-textarea disableDefaultPadding />
<mx-textarea disableDefaultPadding="{{true}}" />- 不去掉
<mx-textarea disableDefaultPadding="{{false}}" />设置键盘右下角按钮的文字 confirmType
属性:confirmType,可选 send、search、next、go、done、return,默认 return 换行。
send,右下角按钮为“发送”
<mx-textarea confirmType="send" />search,右下角按钮为“搜索”
<mx-textarea confirmType="search" />next,右下角按钮为“下一个”
<mx-textarea confirmType="next" />go,右下角按钮为“前往”
<mx-textarea confirmType="go" />done,右下角按钮为“完成”
<mx-textarea confirmType="done" />return,右下角按钮为“换行”,默认文案
<mx-textarea confirmType="return" />点击键盘右下角按钮时是否保持键盘不收起 confirmHold
属性:confirmHold,可选 true、false,默认 false。
- 键盘不收起
<mx-textarea confirmHold />
<mx-textarea confirmHold="{{true}}" />- 键盘收起
<mx-textarea />
<mx-textarea confirmHold="{{false}}" />键盘对齐位置 adjustKeyboardTo
属性:adjustKeyboardTo,可选 cursor 对齐光标位置、bottom 对齐输入框底部,默认 cursor。
cursor对齐光标位置,默认
<mx-textarea adjustKeyboardTo="cursor" />bottom对齐输入框底
<mx-textarea adjustKeyboardTo="bottom" />描述 desc
属性:desc,辅助性说明文案或用于错误提示。
<mx-textarea desc="描述内容" />描述文本色 descColor
属性:descColor,默认 #9AA0B1,支持任何合法的颜色值。
<mx-textarea descColor="#1677FF" />左侧自定义宽度 leftWidth
属性:leftWidth,数字,不带单位,默认使用rpx。
当 styleType == 'horizontal' 和 styleType == 'web' 时有效。
<mx-textarea leftWidth="200" />标签文案 label
属性:label,常用于表单填写项的名称。
<mx-textarea label="标签文案" />标签文案文本色 labelColor
属性:labelColor,默认 #040A23,支持任何合法的颜色值。
需要配合 label 属性一起使用
<mx-textarea labelColor="#1677FF" />文案对齐方式 labelAlign
属性:labelAlign,可选值:left、center、right,默认 left,左对齐。
需要配合 label 属性一起使用
- 左对齐
<mx-textarea />
<mx-textarea labelAlign="left" />- 居中对齐
<mx-textarea labelAlign="center" />- 右对齐
<mx-textarea labelAlign="right" />是否显示必填星号 required
属性:required,默认值 false 不显示必填星号。
- 显示星号
<mx-textarea required />
<mx-textarea required="{{true}}" />- 不显示星号
<mx-textarea required="{{false}}" />
<mx-textarea />必填星号位置 requiredPosition
属性:requiredPosition,可选值 left、right,默认值 right 在标签文本后面。
- 星号在标签后
<mx-textarea required />
<mx-textarea required requiredPosition />
<mx-textarea required requiredPosition="right" />- 星号在标签前
<mx-textarea required requiredPosition="left" />标签前图标 firstIcon
属性:firstIcon,对象,可以自定义图标或图片,自定义图标大小和颜色。
参数:iconName,图标名称,只支持图标库的图标。
参数:iconColor,图标颜色,默认 #040A23,任何合法的颜色值。
参数:iconUrl,自定义图片地址,传入则不使用 iconName 和 iconColor。
参数:iconSize,图标/图片大小,默认 48,不带单位,默认使用 rpx。
事件:bind:textarea_firstIcon,标签前图标点击事件。
// js
data: {
firstIcon: {
iconName: '图标名',
iconColor: '#1677FF',
iconUrl: 'https://cdn.mingsixue.com/xcx/MXWUI/hot.png',
iconSize: 48
},
}<mx-textarea firstIcon="{{firstIcon}}" bind:textarea_firstIcon="事件函数" />标签后图标 lastIcon
属性:lastIcon,对象,可以自定义图标或图片,自定义图标大小和颜色。
参数:iconName,图标名称,只支持图标库的图标。
参数:iconColor,图标颜色,默认 #9AA0B1,任何合法的颜色值。
参数:iconUrl,自定义图片地址,传入则不使用 iconName 和 iconColor。
参数:iconSize,图标/图片大小,默认 32,不带单位,默认使用 rpx。
事件:bind:textarea_lastIcon,标签后图标点击事件。
// js
data: {
lastIcon: {
iconName: '图标名',
iconColor: '#1677FF',
iconUrl: 'https://cdn.mingsixue.com/xcx/MXWUI/hot.png',
iconSize: 32
},
}<mx-textarea lastIcon="{{lastIcon}}" bind:textarea_lastIcon="事件函数" />是否横向布局 horizontal
属性:horizontal,默认值 false,默认纵向布局。
当 styleType == 'web' 时有效。
- 横向
<mx-textarea horizontal />
<mx-textarea horizontal="{{true}}" />- 纵向
<mx-textarea />
<mx-textarea horizontal="{{false}}" />自定义事件
事件:bind:textarea_change,值变更回调事件,返回 event.detail 里返回字段 value、cursor、 keyCode。
事件:bind:textarea_focus,获取焦点回调事件,返回 event.detail 里返回字段 value、height。
事件:bind:textarea_blur,失去焦点回调事件,返回 event.detail 里返回字段 value、cursor。
事件:bind:textarea_line_change,行高变更回调事件,返回 event.detail 里返回字段 height、heightRpx、lineCount。
事件:bind:textarea_confirm,点击完成时回调事件,返回 event.detail 里返回字段 value。
事件:bind:textarea_keyboard_height_change,键盘高度发生变化的回调事件,返回 event.detail 里返回字段 height、duration。
height 为键盘高度。
<mx-xxx
bind:textarea_change="handleChange"
bind:textarea_focus="handleFocus"
bind:textarea_blur="handleBlur"
bind:textarea_line_change="handleLineChange"
bind:textarea_confirm="handleConfirm"
bind:textarea_keyboard_height_change="handleKeyboardHeightChange"
/>参数
| 参数 | 类型 | 必填 | 可选值 | 默认值 | 参数描述 |
|---|---|---|---|---|---|
| styleType | String | 必填 | normal、web |
normal |
文本域样式类型 |
| value | String | 内容 | |||
| textColor | String | 颜色值 | #040A23 |
文本颜色,支持任何合法的颜色值 | |
| placeholder | String | 请输入 |
占位文本 | ||
| placeholderColor | String | 颜色值 | #9AA0B1 |
占位文本色,支持任何合法的颜色值 | |
| bgColor | String | 颜色值 | #FFFFFF |
bgColor,支持任何合法的颜色值 | |
| disabled | Boolean | true、false |
false |
是否禁用 | |
| maxLength | Number | 数字 | -1 |
最大输入长度,设置为 -1 的时候不限制最大长度 | |
| showLimit | Boolean | true、false |
true |
是否显示字数限制,需要和 maxLength 配合使用 |
|
| autoFocus | Boolean | true、false |
false |
自动聚焦 | |
| autoHeight | Boolean | true、false |
false |
是否自动增高 | |
| height | Number | 数字 | 120 |
自定义高度,不带单位,默认使用rpx;autoHeight 设为 true 时,自定义高度无效 |
|
| cursorSpacing | Number | 数字 | 0 |
指定光标与键盘的距离 | |
| cursor | Number | 数字 | -1 |
指定focus时的光标位置 | |
| selectionStart | Number | 数字 | -1 |
光标起始位置,自动聚集时有效,需与selectionEnd搭配使用 | |
| selectionEnd | Number | 数字 | -1 |
光标结束位置,自动聚集时有效,需与selectionStart搭配使用 | |
| adjustPosition | Boolean | true、false |
true |
键盘弹起时,是否自动上推页面 | |
| holdKeyboard | Boolean | true、false |
false |
focus时,点击页面的时候不收起键盘 | |
| disableDefaultPadding | Boolean | true、false |
true |
是否去掉 iOS 下的默认内边距 | |
| confirmType | String | send 发送、search 搜索、next 下一个、go 前往、done 完成、return 换行 |
return |
设置键盘右下角按钮的文字 | |
| confirmHold | Boolean | true、false |
false |
点击键盘右下角按钮时是否保持键盘不收起 | |
| adjustKeyboardTo | String | cursor 对齐光标位置、bottom 对齐输入框底部 |
cursor |
键盘对齐位置 | |
| desc | String | 描述 | |||
| descColor | String | 颜色值 | #9AA0B1 |
描述文本色,支持任何合法的颜色值 | |
| label | String | 是 | 标签文案 | ||
| labelColor | String | 颜色值 | 标签文案文本色,任何合法的颜色值 | ||
| required | Boolean | true、false |
false |
是否必填 | |
| requiredPosition | String | left、right |
right |
必填星号位置 | |
| firstIcon | Object | 标签前图标 | |||
| lastIcon | Object | 标签后图标 |
styleType="web"
| 参数 | 类型 | 必填 | 可选值 | 默认值 | 参数描述 |
|---|---|---|---|---|---|
| leftWidth | Number | 数字 | 左侧自定义宽度,不带单位,默认使用rpx | ||
| labelAlign | String | left、center、right |
left |
标签对齐方式 | |
| horizontal | Boolean | true、false |
false |
是否横向布局 |
firstIcon
| 参数 | 类型 | 默认值 | 参数描述 |
|---|---|---|---|
| iconName | String | 图标名称,只支持图标库中图标 | |
| iconColor | String | #040A23 |
图标颜色,任何合法的颜色值 |
| iconUrl | String | 图标图片地址,传入则 iconName、iconColor 无效 |
|
| iconSize | Number | 48 |
图标大小,不带单位,默认rpx |
lastIcon
| 参数 | 类型 | 默认值 | 参数描述 |
|---|---|---|---|
| iconName | String | 图标名称,只支持图标库中图标 | |
| iconColor | String | #9AA0B1 |
图标颜色,任何合法的颜色值 |
| iconUrl | String | 图标图片地址,传入则 iconName、iconColor 无效 |
|
| iconSize | Number | 32 |
图标大小,不带单位,默认rpx |
事件
| 事件名称 | 类型 | 返回值 | 事件说明 |
|---|---|---|---|
| bind:textarea_change | Change | event.detail |
值变更回调事件,返回 event.detail 里返回字段 value、cursor、 keyCode |
| bind:textarea_focus | Focus | event.detail |
获取焦点回调事件,返回 event.detail 里返回字段 value、height |
| bind:textarea_blur | Blur | event.detail |
event.detail 里返回字段 value、cursor |
| bind:textarea_line_change | Change | event.detail |
行高变更回调事件,返回 event.detail 里返回字段 height、heightRpx、lineCount |
| bind:textarea_confirm | Change | event.detail |
点击完成时回调事件,返回 event.detail 里返回字段 value |
| bind:textarea_keyboard_height_change | Change | event.detail |
键盘高度发生变化的回调事件,返回 event.detail 里返回字段 height、duration |
| bind:textarea_firstIcon | Click | 标签前图标点击事件 | |
| bind:textarea_lastIcon | Click | 标签后图标点击事件 |