更新记录

v1.0.0(2022-03-25) 下载此版本

输入框自动补全


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
× × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

基于uni-easyinput的自动提示组件

组件名:ui-autocomplete

关联组件: uni-easyinputuni-icons

代码块: uiAutocomplete

输入自动匹配组件,实现了“节流操作”以及“最低匹配长度控制”,可自定义节流时间以及匹配开始长度,一般用于新页面中使用,组件实现简单

注意:本组件基于uni-easyinput、uni-icons实现输入以及清楚输入记录效果,使用前请先确保这两个组件已下载,否则无法执行

基本用法

父页面示例

<view @click="linkTo('autocomplete')">
    <text class="result-text" :class="{'color-gray': !(initData.name || initData)}">{{ initData.name || initData || '请选择' }}</text>
</view>
export default {
 data() {
    return {
     // 输入框初始值
     initData: '',
    }
  },
  onLoad() {
    // 页面通讯-监听设置---此处很重要,否则无法接收到选择结果
    uni.$on('autoCompleteResult', this.getResult)
  },
  methods:{
    // 获取返回的数据
    getResult(data){
        this.initData = data
    },
    linkTo(example){
        const keyWords = this.initData.name || this.initData
        uni.navigateTo({
            url: '/pages/examples/' + example + '?key='+ keyWords
        })
    }
  }
}

子页面示例

<ui-autocomplete :propsData="onloadData" :initData="initData"></ui-autocomplete>
export default {
 data() {
  return {
      // 存储输入框初始值(来自于被跳转页面的路由传参)
      initData: '',
     }
  },
  onLoad(options) {
    this.initData = options.key
  },
  methods:{
    onloadData(key){
        return this.getAutoData(key)
    },
    getAutoData(key){
        /* 异步获取 */
        return new Promise((resolve, reject) => {
            let data = [
                {'id':123,'name':'深圳迈瑞股份有限公司'},
                {'id':223,'name':'深圳腾讯网络科技股份有限公司'},
                {'id':323,'name':'深圳华为有限公司'}
            ]
            resolve(data)
        })
        /* 同步获取 */
        /* return [
                {'id':123,'name':'深圳迈瑞股份有限公司'},
                {'id':223,'name':'深圳腾讯网络科技股份有限公司'},
                {'id':323,'name':'深圳华为有限公司'}
            ] */
    }
  }
}

注意:在父页面设置autoCompleteResult侦听是必须的,用来接收最终结果

API

autocomplete Props

属性名 类型 默认值 是否必传 说明
propsData Function [] 返回一个一维数组的函数,数组每一项必须有id、name
initData String '' 输入框初始值
placeHolderText String '请输入...' 未输入时的提示语
autoFocus Boolean false 是否自动获取焦点
focusMatch Boolean true 是否在获焦时匹配
searchSize Number 0 性能参数:自动补充开始长度(即从输入第几个字开始匹配)
wait Number 400 性能参数:节流间隔时间(毫秒)

autocomplete Events

事件称名 说明 返回值 备注
autoCompleteResult 页面通讯事件 e={id: Number OR String, name: String} 必须在父页面设置此侦听,返回值为最终选择结果

更多用法请查看-/pages/index/index.vue

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问