微信小程序搜索框以及简单的页面内容搜索的实现
1 效果
先来看一下效果
2 设计思路
2.1 显示效果的设计
本示例包含两种不同的搜索框,第一种搜索框是在最初状态下显示的搜索框,它由一个输入框input和一个表示“搜索”的图片组成。
第二种搜索框是开始输入时的搜索框,它由一个输入框input和一个表示“取消”的图片组成。
我们可以设置一个标志位focus来表示输入框是否获得了焦点,用于两种形式的搜索框的切换。初始状态下focus=false,于是显示第一种搜索框。当我们在初始状态下点击搜索框时,会触发获得焦点事件,我们可以在输入框的属性中添加bindfocus,为其绑定一个事件处理函数。在事件处理函数中把focus设置为true,就切换到第二种输入框来显示。
在切换到第二种输入框时,把我们所有的数据都放在一个scroll-view中显示。当输入内容时,触发输入事件,为输入框添加bindinput属性,在事件处理函数中查询是否有数据项与输入的内容匹配。如果有,则只显示匹配的数据项。
当点击搜索框右边的图片“取消”时,图片的bindtap属性则会调用相应的函数,在这个函数里,我们把focus设置为false,这样就会切换回第一种输入框的状态,我们也可以利用focus这个标志位来控制scroll-view是否显示,都是用到wx:if=“{{focus}}”。
2.2 文本搜索的实现
如果我们的数据并不是很多,那么就可以存放在页面的js文件中的data里。利用以下方法可以查找是否有数据项与输入的内容匹配:
data里定义两个数组:
list: [{'name':'连花清瘟胶囊','num':'1盒'},{'name':'感冒灵颗粒','num':'1盒'},{'name':'维生素C','num':'2瓶'},{'name':'蒲地蓝消炎片','num':'3盒'}], //这是搜索到的结果list2: [{'name':'连花清瘟胶囊','num':'1盒'},{'name':'感冒灵颗粒','num':'1盒'},{'name':'维生素C','num':'2瓶'},{'name':'蒲地蓝消炎片','num':'3盒'}], //这是所有可供查询的记录
在js中的查询函数:
var list = this.data.list2; //先把所有数据项保存var list2 = []; //定义一个数组//循环取每个数据项的主键,即药品名namefor(var i=0;i<list.length;i++){var string = list[i].name;//查询name是否包含输入框内输入的关键词,如果有就把该数据项装进list2数组if(string.indexOf(e.detail.value) >= 0){list2.push(list[i]);}}//到这里list2就是与搜索结果匹配的数据项了//如果输入的关键词为空就加载原来的全部数据,不是空就加载搜索到的数据if(e.detail.value == ""){//加载全部this.setData({list: list})} else {this.setData({list: list2})}
3 附代码
wxml:
<!-- 一般情况下的搜索框显示 -->
<view wx:if="{{!focus}}" class='search'><image class="search_image" src='/icon/search.png'></image><input type='text' placeholder='搜索药品' placeholder-class="center" confirm-type='search' bindfocus="focusHandler"></input>
</view>
<!-- 获得焦点时的搜索框,多一个取消按钮 -->
<view wx:if="{{focus}}" class='search'><input class="search_input" type='text' placeholder='搜索药品' confirm-type='search' value="{{inputValue}}" bindinput='query'></input><image class="search_image" src='/icon/cancel.png' bindtap='cancelHandler'></image>
</view><!-- 搜索结果显示框 --><scroll-view wx:if="{{focus}}" class="scrollview" scroll-y="true"><view wx:for="{{list}}" wx:key="name"><view class="scrollItem"><text class="font1" space="nbsp"> {{item.name}}</text><text class="font2"space="nbsp">{{item.num}} </text></view></view></scroll-view>
js:
Page({/*** 页面的初始数据*/data: {list: [{'name':'连花清瘟胶囊','num':'1盒'},{'name':'感冒灵颗粒','num':'1盒'},{'name':'维生素C','num':'2瓶'},{'name':'蒲地蓝消炎片','num':'3盒'}], //这是搜索到的结果list2: [{'name':'连花清瘟胶囊','num':'1盒'},{'name':'感冒灵颗粒','num':'1盒'},{'name':'维生素C','num':'2瓶'},{'name':'蒲地蓝消炎片','num':'3盒'}], //这是所有可供查询的记录focus:false, //控制是否显示带取消按钮的搜索框inputValue:""},focusHandler(e){this.setData({focus:true});},cancelHandler(e){this.setData({focus:false});},query(e){this.setData({inputValue: e.detail.value}) //首先回显输入的字符串//实现搜索的功能var list = this.data.list2; //先把第二条json存起来var list2 = []; //定义一个数组//循环去取数据for(var i=0;i<list.length;i++){var string = list[i].name;//查询json里的name是否包含搜索的关键词,如果有就把他装进list2数组if(string.indexOf(e.detail.value) >= 0){list2.push(list[i]);}}//到这里list2就已经是你查出的数据//如果输入的关键词为空就加载原来的全部数据,不是空就加载搜索到的数据if(e.detail.value == ""){//加载全部this.setData({list: list})} else {this.setData({list: list2})}},
代码下载:包含wxml、wxss、js文件
点击下载
微信小程序搜索框以及简单的页面内容搜索的实现相关推荐
- 微信小程序弹框禁止下面的页面滚动
一句话搞定: catchtouchmove="true" <view class="mark" wx:if='{{show}}' catchtouchmo ...
- 微信小程序自定义底部导航栏遮挡页面内容(已解决)
今天也是努力写毕设的一天~ 这几天在实现旅行日记的笔记详情界面,先实现了自定义的底部导航栏,在这里我使用的是iView Weapp,具体的介绍我放在这里了~ 快速上手 iView Weapp 跟着里面 ...
- 微信小程序提示框提示
微信小程序提示框很常见,有的项目弹出提示选择关闭的时候需要不再弹出,清理缓存的时候才弹出. var s = wx.getStorageSync('sh')if (s == '') {// s= tru ...
- php阅读器开发,微信小程序阅读器的简单实例开发
这篇文章主要介绍微信小程序阅读器的简单实例开发的相关资料,需要的朋友可以参考下 今天和朋友聊天说到小程序,然后看在看书,然后我们就弄了个小读书的demo,然后现在分享一下. 一.先来上图: 首先先说下 ...
- 微信小程序选择框问题 小程序picker点击显示object range-key=这里写要显示的字段
微信小程序选择框问题 小程序picker点击显示object range-key="这里写要显示的字段" <picker bindchange="bindClass ...
- 小程序源码:仿各大APP种树微信小程序源码下载-简单快速上手
这是一款仿各大APP的种树获取水果的一款微信小程序 可以对树浇水,杀虫,修剪等等 另外还有夺宝,更多小程序推荐 支持流量主模式等等 可以进行邀请好友加快树木的成长速度 小程序源码下载地址: 小程序源码 ...
- 开发微信小程序,就是这么简单!可自动生成微信小程序源代码,配套JS SDK、接口和后台
开发微信小程序,就是这么简单!自己动手,丰衣足食! 开发微信小程序有多简单? 你只需要掌握前端开发,就可以轻松开发自己的微信小程序,实现自己的业务功能.借助果创云,无须域名.无须服务器.无须数据库, ...
- APP种树微信小程序源码下载-简单快速上手
这是一款种树获取水果的一款微信小程序 可以对树浇水,杀虫,修剪等等 另外还有夺宝,更多小程序推荐 可以进行邀请好友加快树木的成长速度 下面是小编的演示图: 小程序源码下载地址:(已更新)APP种树微信 ...
- 微信小程序input框中加入小图标的实现方法
最近入坑小程序,要求在小程序的输入框中展示一个小图标,页面如下: 然后按照,html页面中的做法,在input框中添加了background-image属性,出乎意料的事,小程序报了下边这样一个错误: ...
最新文章
- 嵌入式linux alsa,嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得
- 心得丨吴恩达Deeplearning.ai 全部课程学习心得分享
- 问题解决: 解释器错误: 没有那个文件或目录
- linux 命令-- touch
- nyoj--79--导弹拦截(动态规划)
- 在python中创建列表的最佳和/或最快方法
- ios apns netty java codec 防止粘包
- ogg启动报错libnnz11.so: cannot open shared object file
- 在Windows环境下为Python 2.5安装SSL模块
- CSS标签选择器(二)
- (转)通过 Javacore 诊断线程挂起等性能问题
- Boostrap Table学习笔记
- 2020软件测试学科全套上课视频教程网盘免费分享
- 卡尔曼滤波原理图文详解
- 原则与思维模型--《思维模型》2
- C++ 几个特殊符号
- R 回归分析 多元线性回归
- QCon旧金山2016大会,议题发布及研讨会一瞥
- image-conversion 图片压缩,vue
- 高一凡-数据结构第2章-线性表