picker-view

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

嵌入页面的滚动选择器。其中只可放置 picker-view-column 组件,其它节点不会显示。

目前滚动过程中 bindpickstart、bindpickend 会被触发多次,后续 skyline 升级会修复该问题 skyline 支持在 picker-view-column 上设置 indicator-style

通用属性

属性 类型 默认值 必填 说明 最低版本
value Array.<number> 否 数组中的数字依次表示 picker-view 内的 picker-view-column 选择的第几项(下标从 0 开始),数字大于 picker-view-column 可选项长度时,选择最后一项。 1.0.0
mask-class string 否 设置蒙层的类名 1.5.0
indicator-style string 否 设置选择器中间选中框的样式 1.0.0
bindchange eventhandle 否 滚动选择时触发 change 事件,event.detail = {value};value 为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项(下标从 0 开始) 1.0.0
bindpickstart eventhandle 否 当滚动选择开始时候触发事件 2.3.1
bindpickend eventhandle 否 当滚动选择结束时候触发事件 2.3.1

WebView 特有属性

属性 类型 默认值 必填 说明 最低版本
indicator-class string 否 设置选择器中间选中框的类名 1.1.0
mask-style string 否 设置蒙层的样式 1.5.0
immediate-change boolean false 否 是否在手指松开时立即触发 change 事件。若不开启则会在滚动动画结束后触发 change 事件。 2.21.1

Bug & Tip

  1. tip: 滚动时在 iOS 自带振动反馈,可在系统设置 -> 声音与触感 -> 系统触感反馈中关闭
  2. tip: indicator-style 属性 skyline 从基础库 3.3.4 开始支持,目前支持 height、border、background-color

示例代码

在开发者工具中预览效果

picker

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

从底部弹起的滚动选择器。

通用属性

属性 类型 默认值 必填 说明 最低版本
header-text string 否 选择器的标题,仅安卓可用 2.11.0
mode string selector 否 选择器类型 1.0.0
合法值 说明
selector 普通选择器
multiSelector 多列选择器
time 时间选择器
date 日期选择器
region 省市区选择器
disabled boolean false 否 是否禁用 1.0.0
bindcancel eventhandle 否 取消选择时触发 1.9.90

除了上述通用的属性,对于不同的mode,picker拥有不同的属性。

普通选择器:mode = selector

属性名 类型 默认值 说明 最低版本
range array/object array [] mode 为 selector 或 multiSelector 时,range 有效
range-key string 当 range 是一个 Object Array 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容
value number 0 表示选择了 range 中的第几个(下标从 0 开始)
bindchange eventhandle value 改变时触发 change 事件,event.detail = {value}

多列选择器:mode = multiSelector

属性名 类型 默认值 说明 最低版本
range array/object array [] mode 为 selector 或 multiSelector 时,range 有效
range-key string 当 range 是一个 Object Array 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容
value array [] 表示选择了 range 中的第几个(下标从 0 开始)
bindchange eventhandle value 改变时触发 change 事件,event.detail = {value}
bindcolumnchange eventhandle 列改变时触发

时间选择器:mode = time

属性名 类型 默认值 说明 最低版本
value string 表示选中的时间,格式为”hh:mm”
start string 表示有效时间范围的开始,字符串格式为”hh:mm”
end string 表示有效时间范围的结束,字符串格式为”hh:mm”
bindchange eventhandle value 改变时触发 change 事件,event.detail = {value}

日期选择器:mode = date

属性名 类型 默认值 说明 最低版本
value string 当天 表示选中的日期,格式为”YYYY-MM-DD”
start string 表示有效日期范围的开始,字符串格式为”YYYY-MM-DD”
end string 表示有效日期范围的结束,字符串格式为”YYYY-MM-DD”
fields string day 有效值 year,month,day,表示选择器的粒度
bindchange eventhandle value 改变时触发 change 事件,event.detail = {value}

fields 有效值:

值 说明
year 选择器粒度为年
month 选择器粒度为月份
day 选择器粒度为天

省市区选择器:mode = region 1.4.0

属性名 类型 默认值 说明 最低版本
value array [] 表示选中的省市区,默认选中每一列的第一个值
custom-item string 可为每一列的顶部添加一个自定义的项 1.5.0
level string region 选择器层级 2.21.1
bindchange eventhandle value 改变时触发 change 事件,event.detail = {value, code, postcode},其中字段 code 是统计用区划代码,postcode 是邮政编码

level 的有效值

值 说明
province 省级选择器
city 市级选择器
region 区级选择器
sub-district 街道选择器

示例代码

在开发者工具中预览效果

<view class="section">
  <view class="section__title">普通选择器</view>
  <picker bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
    <view class="picker">
      当前选择:{{array[index]}}
    </view>
  </picker>
</view>
<view class="section">
  <view class="section__title">多列选择器</view>
  <picker mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{multiIndex}}" range="{{multiArray}}">
    <view class="picker">
      当前选择:{{multiArray[0][multiIndex[0]]}},{{multiArray[1][multiIndex[1]]}},{{multiArray[2][multiIndex[2]]}}
    </view>
  </picker>
</view>
<view class="section">
  <view class="section__title">时间选择器</view>
  <picker mode="time" value="{{time}}" start="09:01" end="21:01" bindchange="bindTimeChange">
    <view class="picker">
      当前选择: {{time}}
    </view>
  </picker>
</view>

<view class="section">
  <view class="section__title">日期选择器</view>
  <picker mode="date" value="{{date}}" start="2015-09-01" end="2017-09-01" bindchange="bindDateChange">
    <view class="picker">
      当前选择: {{date}}
    </view>
  </picker>
</view>
<view class="section">
  <view class="section__title">省市区选择器</view>
  <picker mode="region" bindchange="bindRegionChange" value="{{region}}" custom-item="{{customItem}}">
    <view class="picker">
      当前选择:{{region[0]}},{{region[1]}},{{region[2]}}
    </view>
  </picker>
</view>
Page({
  data: {
    array: ['美国', '中国', '巴西', '日本'],
    objectArray: [
      {
        id: 0,
        name: '美国'
      },
      {
        id: 1,
        name: '中国'
      },
      {
        id: 2,
        name: '巴西'
      },
      {
        id: 3,
        name: '日本'
      }
    ],
    index: 0,
    multiArray: [['无脊柱动物', '脊柱动物'], ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物'], ['猪肉绦虫', '吸血虫']],
    objectMultiArray: [
      [
        {
          id: 0,
          name: '无脊柱动物'
        },
        {
          id: 1,
          name: '脊柱动物'
        }
      ], [
        {
          id: 0,
          name: '扁性动物'
        },
        {
          id: 1,
          name: '线形动物'
        },
        {
          id: 2,
          name: '环节动物'
        },
        {
          id: 3,
          name: '软体动物'
        },
        {
          id: 4,
          name: '节肢动物'
        }
      ], [
        {
          id: 0,
          name: '猪肉绦虫'
        },
        {
          id: 1,
          name: '吸血虫'
        }
      ]
    ],
    multiIndex: [0, 0, 0],
    date: '2016-09-01',
    time: '12:01',
    region: ['广东省', '广州市', '海珠区'],
    customItem: '全部'
  },
  bindPickerChange: function(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      index: e.detail.value
    })
  },
  bindMultiPickerChange: function (e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      multiIndex: e.detail.value
    })
  },
  bindMultiPickerColumnChange: function (e) {
    console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
    var data = {
      multiArray: this.data.multiArray,
      multiIndex: this.data.multiIndex
    };
    data.multiIndex[e.detail.column] = e.detail.value;
    switch (e.detail.column) {
      case 0:
        switch (data.multiIndex[0]) {
          case 0:
            data.multiArray[1] = ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物'];
            data.multiArray[2] = ['猪肉绦虫', '吸血虫'];
            break;
          case 1:
            data.multiArray[1] = ['鱼', '两栖动物', '爬行动物'];
            data.multiArray[2] = ['鲫鱼', '带鱼'];
            break;
        }
        data.multiIndex[1] = 0;
        data.multiIndex[2] = 0;
        break;
      case 1:
        switch (data.multiIndex[0]) {
          case 0:
            switch (data.multiIndex[1]) {
              case 0:
                data.multiArray[2] = ['猪肉绦虫', '吸血虫'];
                break;
              case 1:
                data.multiArray[2] = ['蛔虫'];
                break;
              case 2:
                data.multiArray[2] = ['蚂蚁', '蚂蟥'];
                break;
              case 3:
                data.multiArray[2] = ['河蚌', '蜗牛', '蛞蝓'];
                break;
              case 4:
                data.multiArray[2] = ['昆虫', '甲壳动物', '蛛形动物', '多足动物'];
                break;
            }
            break;
          case 1:
            switch (data.multiIndex[1]) {
              case 0:
                data.multiArray[2] = ['鲫鱼', '带鱼'];
                break;
              case 1:
                data.multiArray[2] = ['青蛙', '娃娃鱼'];
                break;
              case 2:
                data.multiArray[2] = ['蜥蜴', '龟', '壁虎'];
                break;
            }
            break;
        }
        data.multiIndex[2] = 0;
        break;
    }
    console.log(data.multiIndex);
    this.setData(data);
  },
  bindDateChange: function(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      date: e.detail.value
    })
  },
  bindTimeChange: function(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      time: e.detail.value
    })
  },
  bindRegionChange: function (e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      region: e.detail.value
    })
  }
})

label

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

用来改进表单组件的可用性。

使用 for 属性找到对应的 id,或者将控件放在该标签下,当点击时,就会触发对应的控件。 for 优先级高于内部控件,内部有多个控件的时候默认触发第一个控件。 目前可以绑定的控件有:button, checkbox, radio, switch, input。

属性说明

属性 类型 默认值 必填 说明 最低版本
for string 否 绑定控件的 id 1.0.0

示例代码

在开发者工具中预览效果

键盘辅助

基础库 2.15.0 开始支持,低版本需做兼容处理。

渲染框架支持情况:WebView

功能描述

设置 input / textarea 聚焦时键盘上方 cover-view / cover-image 工具栏视图

Bug & Tip

  1. tip: 视图最大高度为 200px

示例代码

在开发者工具中预览效果

<textarea hold-keyboard="{{true}}">
  <keyboard-accessory class="container" style="height: 50px;">
    <cover-view bindtap="tap" style="flex: 1; background: green;">1</cover-view>
    <cover-view bindtap="tap" style="flex: 1; background: red;">2</cover-view>
  </keyboard-accessory>
</textarea>

微信小程序

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

输入框。该组件是原生组件,使用时请注意相关限制

通用属性

属性 类型 默认值 必填 说明 最低版本
value string 是 输入框的初始内容 1.0.0
type string text 否 input 的类型 1.0.0
合法值 说明 最低版本
text 文本输入键盘
number 数字输入键盘
idcard 身份证输入键盘
digit 带小数点的数字键盘
safe-password 密码安全输入键盘 指引。仅 Webview 支持。 2.18.0
nickname 昵称输入键盘。 2.21.2
password boolean false 否 是否是密码类型 1.0.0
placeholder string 是 输入框为空时占位符 1.0.0
placeholder-style string 是 指定 placeholder 的样式 1.0.0
disabled boolean false 否 是否禁用 1.0.0
maxlength number 140 否 最大输入长度,设置为 -1 的时候不限制最大长度 1.0.0
cursor-spacing number 0 否 指定光标与键盘的距离,取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 1.0.0
auto-focus boolean false 否 (即将废弃,请直接使用 focus )自动聚焦,拉起键盘 1.0.0
focus boolean false 否 获取焦点 1.0.0
confirm-type string done 否 设置键盘右下角按钮的文字,仅在type=’text’时生效 1.1.0
合法值 说明
send 右下角按钮为“发送”
search 右下角按钮为“搜索”
next 右下角按钮为“下一个”
go 右下角按钮为“前往”
done 右下角按钮为“完成”
always-embed boolean false 否 强制 input 处于同层状态,默认 focus 时 input 会切到非同层状态 (仅在 iOS 下生效) 2.10.4
confirm-hold boolean false 否 点击键盘右下角按钮时是否保持键盘不收起 1.1.0
cursor number 是 指定focus时的光标位置 1.5.0
cursor-color string 是 光标颜色。iOS 下的格式为十六进制颜色值 #000000,安卓下的只支持 default 和 green,Skyline 下无限制 3.1.0
selection-start number -1 否 光标起始位置,自动聚集时有效,需与selection-end搭配使用 1.9.0
selection-end number -1 否 光标结束位置,自动聚集时有效,需与selection-start搭配使用 1.9.0
adjust-position boolean true 否 键盘弹起时,是否自动上推页面 1.9.90
hold-keyboard boolean false 否 focus时,点击页面的时候不收起键盘 2.8.2
safe-password-cert-path string 否 安全键盘加密公钥的路径,只支持包内路径。鸿蒙 OS 暂不支持 2.18.0
safe-password-length number 否 安全键盘输入密码长度。鸿蒙 OS 暂不支持 2.18.0
safe-password-time-stamp number 否 安全键盘加密时间戳。鸿蒙 OS 暂不支持 2.18.0
safe-password-nonce string 否 安全键盘加密盐值。鸿蒙 OS 暂不支持 2.18.0
safe-password-salt string 否 安全键盘计算hash盐值,若指定custom-hash 则无效。鸿蒙 OS 暂不支持 2.18.0
safe-password-custom-hash string 否 安全键盘计算hash的算法表达式,如 md5(sha1('foo' + sha256(sm3(password + 'bar'))))。鸿蒙 OS 暂不支持 2.18.0
bindinput eventhandle 是 键盘输入时或内容改变时触发。event.detail = { value: string, cursor?: number, keyCode?: number },cursor 为光标位置,keyCode 为键值。从 2.1.0 版本开始支持,处理函数可以直接 return 一个字符串,这个字符串会替换输入框的内容。 1.0.0
bindchange eventhandle 是 键盘非聚焦状态内容改变时触发。event.detail = { value: string } 1.0.0
bindfocus eventhandle 是 输入框聚焦时触发,event.detail = { value: string, height: number },height 为键盘高度,从基础库 1.9.90 版本开始支持 1.0.0
bindblur eventhandle 是 输入框失去焦点时触发,event.detail = { value: string, encryptedValue?: string, encryptError?: string } 1.0.0
bindconfirm eventhandle 是 点击完成按钮时触发,event.detail = { value: string, encryptedValue?: string, encryptError?: string } 1.0.0
bindkeyboardheightchange eventhandle 是 键盘高度发生变化的时候触发此事件,event.detail = {height: number, duration: number} 2.7.0
bindnicknamereview eventhandle 是 用户昵称审核完毕后触发,仅在 type 为 “nickname” 时有效,event.detail = { pass: boolean, timeout: boolean } 2.29.1

Skyline 特有属性

属性 类型 默认值 必填 说明 最低版本
bind:selectionchange eventhandle 否 选区改变事件, {selectionStart, selectionEnd} 3.2.0
bind:keyboardcompositionstart eventhandle 否 输入法开始新的输入时触发(仅当输入法支持时触发) 3.2.0
bind:keyboardcompositionupdate eventhandle 否 输入法输入字符时触发(仅当输入法支持时触发) 3.2.0
bind:keyboardcompositionend eventhandle 否 输入法输入结束时触发(仅当输入法支持时触发) 3.2.0
worklet:onkeyboardheightchange worklet 否 键盘高度变化时触发。event.detail = {height: height, pageBottomPadding: pageBottomPadding}; height: 键盘高度,pageBottomPadding: 页面上推高度 3.2.4

WebView 特有属性

属性 类型 默认值 必填 说明 最低版本
placeholder-class string input-placeholder 否 指定 placeholder 的样式类 1.0.0

Bug & Tip

  1. tip: confirm-type的最终表现与手机输入法本身的实现有关,部分安卓系统输入法和第三方输入法可能不支持或不完全支持
  2. tip : input 组件是一个原生组件,字体是系统字体,所以无法设置 font-family
  3. tip : 在 input 聚焦期间,避免使用 css 动画
  4. tip : 对于将 input 封装在自定义组件中、而 form 在自定义组件外的情况, form 将不能获得这个自定义组件中 input 的值。此时需要使用自定义组件的 内置 behaviors wx://form-field
  5. tip : 键盘高度发生变化,keyboardheightchange事件可能会多次触发,开发者对于相同的height值应该忽略掉
  6. bug : 微信版本 6.3.30, focus 属性设置无效
  7. bug : 微信版本 6.3.30, placeholder 在聚焦时出现重影问题

示例代码

在开发者工具中预览效果

form

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 聊天工具模式

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

表单。将组件内的用户输入的 switch、input、checkbox、slider、radio、picker 等表单控件的内容提交。

当点击微信小程序表单中 form-type 为 submit 的 button 组件时,会将表单组件中的 value 值进行提交,需要在表单组件中加上 name 来作为 key。

属性说明

属性 类型 默认值 必填 说明 最低版本
report-submit boolean false 否 是否返回 formId 用于发送模板消息 1.0.0
report-submit-timeout number 0 否 等待一段时间(毫秒数)以确认 formId 是否生效。如果未指定这个参数,formId 有很小的概率是无效的(如遇到网络失败的情况)。指定这个参数将可以检测 formId 是否有效,以这个参数的时间作为这项检测的超时时间。如果失败,将返回 requestFormId:fail 开头的 formId 2.6.2
bindsubmit eventhandle 否 携带 form 中的数据触发 submit 事件,event.detail = {value : {‘name’ : ‘value’} , formId: ”} 1.0.0
bindreset eventhandle 否 表单重置时会触发 reset 事件 1.0.0
bindsubmitToGroup eventhandle 否 用户发送文本到聊天后触发,但不代表最终发送成功 3.7.8

发送文本到群示例代码

需结合 button 和 textarea 组件使用。 button 需要设置 form-type="submitToGroup",此时点击按钮将会发送 textarea 的内容到聊天。

<form bind:submitToGroup="onSubmitToGroup">
    <textarea value="{{shareText}}" />
    <button
    form-type="submitToGroup"
    need-show-entrance="{{true}}"
    entrance-path=""
    ></button>
</form>

示例代码

// 在开发者工具中预览效果

使用内置 behaviors

对于微信小程序的 form 组件,目前可以自动识别下列内置 behaviors:

wx://form-field

wx://form-field-group

wx://form-field-button

wx://form-field

使自定义组件有类似于表单控件的行为。 微信小程序的 form 组件可以识别这些自定义组件,并在 submit 事件中返回组件的字段名及其对应字段值。这将为它添加以下两个属性。

属性名 类型 描述 最低版本
name String 在表单中的字段名 1.6.7
value 任意 在表单中的字段值 1.6.7

代码示例: 在开发者工具中预览效果

// custom-form-field.js
Component({
 behaviors: ['wx://form-field'],
 data: {
   value: ''
 },
 methods: {
   onChange: function (e) {
     this.setData({
       value: e.detail.value,
     })
   }
 }
})

wx://form-field-group

从基础库版本 2.10.2 开始提供支持。

代码示例: 在开发者工具中预览效果

使微信小程序的 form 组件可以识别到这个自定义组件内部的所有表单控件。 例如,页面的结构如下:

<form bindsubmit="submit">
  <custom-comp></custom-comp>
  <button form-type="submit">submit</button>
</form>

组件 custom-comp 自身结构如下:

<input name="name" />
<switch name="student" />

如果组件 custom-comp 配置有:

Component({
 behaviors: ['wx://form-field-group']
})

此时,表单的 submit 事件的 value 中将包含 name 和 student 两个字段。

wx://form-field-button

从基础库版本 2.10.3 开始提供支持。

代码示例: 在开发者工具中预览效果

使微信小程序的 form 组件可以识别到这个自定义组件内部的 button , 如果自定义组件内部有设置了 form-type 的 button ,它将被组件外的 form 接受。 例如,页面的结构如下:

<form bindsubmit="submit">
  <input name="name" placeholder="请输入名字"></input>
  <custom-comp></custom-comp>
</form>

组件 custom-comp 自身结构如下:

<button form-type="submit">submit</button>

如果组件 custom-comp 配置有:

Component({
 behaviors: ['wx://form-field-button']
})

此时点击组件内的 button ,将触发 form 的 submit 事件。

editor-portal

基础库 3.7.11 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:WebView

功能描述

渲染微信小程序 editor 组件的自定义区块。相关接口 EditorCtx.insertCustomBlock。

属性说明

属性 类型 默认值 必填 说明
key string 是 自定义区块的 blockId

使用方法

插入自定义区块

  1. 使用 EditorContext.insertCustomBlock 插入自定义区块(此时仅占位),获取返回的 blockId;
  2. 渲染 <editor-portal> 组件,并指定 key 属性为 blockId,<editor-portal> 中的内容将插入到自定义区块的位置;

重新渲染自定义区块

自定义区块的结构和数据需要分开存储。建议编辑区内容使用返回的delta 数据结构存储,更为精简。

  1. 通过 EditorContext.getContents 获取编辑区内容,此时 delta 中自定义块仅保存对应的 blockId;
  2. 开发者需自行保存自定义块对应的数据内容,按 blockId 映射;
  3. 通过 EditorContext.setContents 设置编辑区内容时,同时渲染 <editor-portal> 组件替换自定义区块的内容;

示例代码

在开发者工具中预览效果

<editor id="editor">
  <block wx:for="{{customBlockList}}" wx:key="blockId">
    <editor-portal key="{{item.blockId}}">
      <view class="flex"></view>
    </editor-portal>
  </block>
</editor>
Page({
  insertCustomBlock() {
    const { customBlockList } = this.data
    this.editorCtx.insertCustomBlock({
      success:(res) => {
        customBlockList.push({
          blockId: res.blockId
        })
        this.setData({ customBlockList })
      }
    })
  }
})

editor

基础库 2.7.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:WebView

功能描述

富文本编辑器,可以对图片、文字进行编辑。

编辑器导出内容支持带标签的 html和纯文本的 text,编辑器内部采用 delta 格式进行存储。

通过setContents接口设置内容时,解析插入的 html 可能会由于一些非法标签导致解析错误,建议开发者在微信小程序内使用时通过 delta 进行插入。

富文本组件内部引入了一些基本的样式使得内容可以正确的展示,开发时可以进行覆盖。需要注意的是,在其它组件或环境中使用富文本组件导出的html时,需要额外引入 这段样式,并维护<ql-container><ql-editor></ql-editor></ql-container>的结构。

图片控件仅初始化时设置有效。

相关 api:EditorContext

属性说明

属性 类型 默认值 必填 说明 最低版本
read-only boolean false 否 设置编辑器为只读 2.7.0
placeholder string 否 提示信息 2.7.0
show-img-size boolean false 否 点击图片时显示图片大小控件 2.7.0
show-img-toolbar boolean false 否 点击图片时显示工具栏控件 2.7.0
show-img-resize boolean false 否 点击图片时显示修改尺寸控件 2.7.0
enable-formats Array.<string> 所有格式 否 编辑器允许的名单内的格式 3.2.2
enterkeyhint string enter 否 定义虚拟键盘回车键的操作标签 3.7.11
confirm-hold boolean true 否 点击键盘回车键时是否保持键盘不收起 3.7.11
bindready eventhandle 否 编辑器初始化完成时触发 2.7.0
bindfocus eventhandle 否 编辑器聚焦时触发,event.detail = {html, text, delta} 2.7.0
bindblur eventhandle 否 编辑器失去焦点时触发,detail = {html, text, delta} 2.7.0
bindinput eventhandle 否 编辑器内容改变时触发,detail = {html, text, delta} 2.7.0
bindstatuschange eventhandle 否 通过 Context 方法改变编辑器内样式时触发,返回选区已设置的样式 2.7.0

编辑器内支持部分 HTML 标签和内联样式,不支持class和id

支持的标签

不满足的标签会被忽略,<div>会被转行为<p>储存。

类型 节点
行内元素 <span> <strong> <b> <ins> <em> <i> <u> <a> <del> <s> <sub> <sup> <img>
块级元素 <p> <h1> <h2> <h3> <h4> <h5> <h6> <hr> <ol> <ul> <li>

支持的内联样式

内联样式仅能设置在行内元素或块级元素上,不能同时设置。例如 font-size 归类为行内元素属性,在 p 标签上设置是无效的。

类型 样式
块级样式 text-align direction margin margin-top margin-left margin-right margin-bottom
padding padding-top padding-left padding-right padding-bottom line-height text-indent
行内样式 font font-size font-style font-variant font-weight font-family
letter-spacing text-decoration color background-color

enable-formats 属性列表

可以通过该参数控制以下属性是否被禁用。请注意,不在以下名单内的格式将固定开启。

name version
bold 3.2.2
italic 3.2.2
underline 3.2.2

Bug & Tip

  1. tip: 使用 catchtouchend 绑定事件则不会使编辑器失去焦点(2.8.3)
  2. tip: 插入的 html 中事件绑定会被移除
  3. tip: formats 中的 color 属性会统一以 hex 格式返回
  4. tip: 粘贴时仅纯文本内容会被拷贝进编辑器
  5. tip: 插入 html 到编辑器内时,编辑器会删除一些不必要的标签,以保证内容的统一。例如<p><span>xxx</span></p>会改写为<p>xxx</p>
  6. tip: 编辑器聚焦时页面会被上推,系统行为以保证编辑区可见

示例代码

在开发者工具中预览效果

checkbox-group

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

多项选择器,内部由多个 checkbox 组成。

属性说明

属性 类型 默认值 必填 说明 最低版本
bindchange EventHandle 否 checkbox-group 中选中项发生改变时触发 change 事件,detail = {value:[选中的 checkbox 的 value 的数组]} 1.0.0

checkbox

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

多选项目。

属性说明

属性 类型 默认值 必填 说明 最低版本
value string 否 checkbox标识,选中时触发checkbox-group的 change 事件,并携带 checkbox 的 value 1.0.0
disabled boolean false 否 是否禁用 1.0.0
checked boolean false 否 当前是否选中,可用来设置默认选中 1.0.0
color string #09BB07 否 checkbox的颜色,同css的color 1.0.0

示例代码

在开发者工具中预览效果