实现效果如下

聚焦显示历史记录

关联历史记录

注意点

结构上需要将input框和下面的historyList作为一个整体,可自行控制展示历史记录的规格;
使用微信缓存API wx.getStorageSync 和wx.setStorageSync,处理历史记录的存储时记得去重

WXML结构

 <view class="search-box"><image class="search-icon" src="./images/searchIcon.png" ></image><input class="hd-search" placeholder="请输入搜索关键词" bindconfirm="searchMsg"bindfocus="showHistory"bindblur="clearList"bindinput="findHistory"value="{{inputText}}"focus="{{isFocus}}"></input><!--历史记录!--><view class="search-history-item" wx:for="{{searchList}}" wx:key="index" bindtap="reSearch"data-text="{{item}}">{{item}}</view></view>

WXSS

.search-box {width: 700rpx;position: absolute;padding-left: 80rpx;padding-right: 80rpx;top: 340rpx;left: 50%;z-index: 2;transform: translateX(-50%);align-items: center;font-family: PingFangSC-Regular;font-size: 28rpx;border-radius: 60rpx;background-color: #fff;box-sizing: border-box;box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(218,224,229,1);
}
.hd-search {width: 100%;height: 80rpx;
}
.search-icon {width: 40rpx;height: 40rpx;position: absolute;top: 20rpx;left: 22rpx;
}
.search-history-item {height: 60rpx;overflow: hidden;
}

JS

data: {searchList:[],inputText:'',isFocus:false},searchMsg(option){// option.detail.valueconst that = this// 回车值入缓存if(option.detail.value != ''){try {let value = wx.getStorageSync('history')if(value){// 最多缓存20条记录that.data.searchList = JSON.parse(value).slice(0,20)}//去重let index = this.data.searchList.indexOf(option.detail.value)if(index > -1){this.data.searchList.splice(index,1)}that.data.searchList.unshift(option.detail.value)wx.setStorageSync('history', JSON.stringify(that.data.searchList))}catch(e){console.log(e)}// 搜索成功后跳转页面,并清空searchListthis.clearList()}},// 聚焦且无输入值时显示所有历史记录,有输入值时显示包含其的所有历史记录showHistory(option){// option.detail.value//获取缓存数据const that = thisif(!option.detail.value){try {let value = wx.getStorageSync('history')if (value) {that.setData({// 只展示5个searchList:JSON.parse(value).slice(0,5)})}} catch (e) {}}else {this.findHistory('',option.detail.value)}},//点击历史记录进行填充搜索reSearch(e){// e.currentTarget.dataset.textthis.setData({inputText:e.currentTarget.dataset.text,// 这个聚焦方法会出现闪动的情况isFocus:true})},clearList(){this.setData({searchList:[]})},// 查找搜索历史记录findHistory(e,param){// e.detail.valueconst that = thislet temp = []let p = param ? param : e.detail.valueif(p){try{let value = wx.getStorageSync('history')if(value){JSON.parse(value).forEach((item,index)=>{if(item.indexOf(p) > -1){temp.unshift(item)}})}}catch(e){console.log(e)}}else {temp = JSON.parse(wx.getStorageSync('history')).slice(0,5)}that.setData({searchList:temp})},

微信小程序 input框实现搜索历史记录相关推荐

  1. 微信小程序input框中加入小图标的实现方法

    最近入坑小程序,要求在小程序的输入框中展示一个小图标,页面如下: 然后按照,html页面中的做法,在input框中添加了background-image属性,出乎意料的事,小程序报了下边这样一个错误: ...

  2. 微信小程序 input框进行双向绑定

    在微信小程序的规则中,input标签中的数据为单向绑定,无法像Vue框架中的v-model直接进行input的双向绑定. 下面有一种思路来解决双向绑定这个思路. 1.利用bindinput记录下inp ...

  3. 微信小程序input框在某些手机上获取数据失败

    因为加了有数据为空不允许提交的判断,测试的时候发现有的手机总是提示有数据为空,不能提交, 测试之后发现是填写手机号的input框type类型为number,然后写了三个框分别获取数据, type类型分 ...

  4. uniapp开发微信小程序input框限制输入

    input框输入手机号的约束 <input @input="onlyNum" class="inp" v-model="phone" ...

  5. 微信小程序input框输入值校验

    1.定义正则方法 // 校验输入价格的正则方法checkInputText: function (text) {var reg = /^(\.*)(\d+)(\.?)(\d{0,2}).*$/g; / ...

  6. 微信小程序input框只能输入小数/正整数

    官方组件说明:https://developers.weixin.qq.com/miniprogram/dev/component/input.html 给type不同的值就好,以下示例不满足则需要I ...

  7. 微信小程序input框输入值获取

    提交表单时获取输入框的值 wxml <view><!-- 携带 form 中的数据触发 submit 事件 --><form bindsubmit="submi ...

  8. 微信小程序input搜索解决中文问题(输入拼音) 实时搜索节流处理(bindinput 节流)

    微信小程序input搜索解决中文问题(输入拼音) & 实时搜索节流处理(bindinput 节流) 问题 微信小程序输入拼音的时候, 还没有完全输入完成, bindinput就会触发, 当我输 ...

  9. 小程序数据框有重影_微信小程序input重影什么原因?怎么解决重影?

    微信小程序input重影什么原因?怎么解决重影?微信小程序input输入框输入出现了重影的情况,这是什么原因呢?又该怎么去解决微信小程序input重影问题. 微信小程序input重影怎么办? 问题描述 ...

最新文章

  1. mysql e 导出数据库_mysql导出数据库几种方法
  2. python数据库教程_python教程:数据库
  3. C++实现图片的base64编码
  4. linux c socket通信
  5. 织梦首页html在哪儿,dedecms织梦首页去index.html
  6. Nacos配置中心规范
  7. css里面的let,js中let和var定义变量的区别
  8. Android内容提供者(读取手机联系人信息)
  9. c#app.config配置文件使用
  10. 飞康力推“一次付费”的存储定价模式
  11. 【转】windows下mongodb安装与使用整理
  12. 回答朋友关于美团点评业务线工作体验
  13. 中国近代史-蒋廷黻-笔记-第一章-剿夷与抚夷-第一节-英国请中国订立邦交
  14. Vue--day03--组件
  15. 32位md5解密_Python 加密算法 md5
  16. fastposter v2.6.0 发布 电商海报生成器
  17. vmware安装linux虚拟机
  18. aodv协议源代码分析
  19. mdk5(keil 5) 中间库emwin 图形库移植
  20. C#下使用第三方开源控件读取Excel文件的内容

热门文章

  1. MT 112 Status of a Request for Stop Payment of a Cheque支票止付请求状态
  2. python tkinter 各控件属性 全
  3. 做网站的怎么敢忽视客户?
  4. 【C语言】数据结构与算法-统计《白鲸记》(英文版)词频
  5. 读书笔记-干法-劳动是医治百病良药
  6. 12、数码相框编写程序之效果演示与代码讲解
  7. NAT的四种分类:全锥形NAT,地址受限锥形NAT,端口受限锥形NAT,对称NAT
  8. 22.JAVA编程思想——排序和搜索
  9. 茶会 | 电商微营销茶会第1期预告
  10. 数学建模国赛论文格式及模板