小程序实现搜索框


Posted in Javascript onJune 19, 2020

小程序中搜索框的简单实现,供大家参考,具体内容如下

搜索框

搜索框无论是在电商网站还是小程序中是很常见的,那么在小程序中是如何实现的呢,我们一起来看看吧(过程遇到很多问题)。

思路

在搜索框中输入关键词时,应该会向服务器发送请求,因为没有相关接口,所以我就模拟数据啦,用文档中API中的setStorage和getStorage在本地存储数据和读取数据,在搜索框中输入时若能匹配到则显示,若匹配不到,则显示“没有数据”。

模糊搜索

search.wxml

<!--pages/search/search.wxml-->
<view class='search'>
 <input type='text' 
 placeholder='请输入您要搜索的内容'
 bindinput='input' 
 bindconfirm='confirm'/>
 <icon type='search' class='icons'></icon>
 <view wx:for="{{list}}" wx:key='' class='lists'>
 <text wx:if="{{item.show}}">{{item.name}}</text>
 </view>
</view>

search.wxss

/* pages/search/search.wxss */
.search{
 position: relative;
}
.search input{
 border:1px solid #ccc;
 border-radius: 6px;
 height: 30px;
}
.icons{
 position: absolute;
 right: 20px;
 top:5px;
}
.lists{
 text-align: center;
 margin-top: 20px;
 color: rgb(230, 124, 25);
}

search.js

// pages/search/search.js
Page({

 /**
 * 页面的初始数据
 */
 data: {
 list:[] 
 },
 //键盘输入时实时调用搜索方法
 input(e){
 // console.log(e)
 this.search(e.detail.value)
 },
 //点击完成按钮时触发
 confirm(e){
 this.search(e.detail.value)
 },
 search(key){
 var that=this;
 //从本地缓存中异步获取指定 key 的内容
 var list=wx.getStorage({
 key: 'list',
 //从Storage中取出存储的数据
 success: function(res) {
 // console.log(res)
 if(key==''){ //用户没有输入时全部显示
 that.setData({
 list:res.data
 })
 return;
 }
 var arr=[]; //临时数组,用于存放匹配到的数组
 for(let i in res.data){
 res.data[i].show=false; //所有数据隐藏
 if (res.data[i].search.indexOf(key)>=0){
 res.data[i].show = true; //让匹配到的数据显示
 arr.push(res.data[i])
 }
 }
 if(arr.length==0){
 that.setData({
 list:[{show:true,name:'没有相关数据!'}]
 })
 }else{
 that.setData({
 list: arr
 })
 }
 },
 })
 },
 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function (options) {
 var list=[
 {name: "西安市第一人民医院", show: true, search:"西安市第一人民医院"},
 {name: "西安市第二人民医院", show: true, search: "西安市第二人民医院" },
 {name: "兰州市第一人民医院", show: true, search: "兰州市第一人民医院" },
 {name: "兰州市第二人民医院", show: true, search: "兰州市第二人民医院" }
 ]
 wx.setStorage({
 key: 'list',
 data: list
 })
 this.setData({
 list:list
 })
 },
})

效果图

小程序实现搜索框

条件搜索

searchif.wxml

<!--pages/searchif/searchif.wxml-->
<view class='search'>
 <input type='text'
 bindblur='input'/>
 <button type='primary' class='btn' size='mini'>搜索</button>
 <view wx:for="{{list}}" wx:key='' class='lists'>
 <text wx:if="{{list}}">{{item.name}}</text>
 </view>
</view>

searchif.wxss

/* pages/searchif/searchif.wxss */
.search{
 padding-left: 10px;
}
.search input{
 border:1px solid #ccc;
 border-radius: 6px;
 height: 30px;
 display: inline-block;
 padding-left: 5px;
}
.btn{
 height: 32px;
 margin-left: 10px;
}
.lists{
 text-align: center;
 margin-top: 20px;
 color: rgb(230, 124, 25);
}

searchif.js

// pages/searchif/searchif.js
Page({
 /**
 * 页面的初始数据
 */
 data: {
 list: []
 },
 //键盘输入时实时调用搜索方法
 input(e) {
 this.search(e.detail.value)
 },
 search(key) {
 var that = this;
 //从本地缓存中异步获取指定 key 的内容
 var list = wx.getStorage({
 key: 'list',
 //从Storage中取出存储的数据
 success: function (res) {
 // console.log(res)
 if (key == '') { //用户没有输入时全部显示
 that.setData({
 list: res.data
 })
 return;
 }
 var arr = []; //临时数组,用于存放匹配到的数组
 for (let i in res.data) {
 if (res.data[i].name.indexOf(key) >= 0) {
 arr.push(res.data[i])
 }
 }
 if (arr.length == 0) {
 that.setData({
 list: [{ name: '没有相关数据!' }]
 })
 } else {
 that.setData({
 list: arr
 })
 }
 },
 })
 },
 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function (options) {
 var list = [
 { name: "西安市第一人民医院"},
 { name: "西安市第二人民医院"},
 { name: "兰州市第一人民医院"},
 { name: "兰州市第二人民医院"}
 ]
 wx.setStorage({
 key: 'list',
 data: list
 })
 this.setData({
 list: list
 })
 },
})

效果图

小程序实现搜索框

遇到的问题

在小程序文档中的setStorage里面的代码是这样写的:

wx.setStorage({
 key:"key",
 data:"value"
})

在此过程中,我在data后面的值也加了引号,结果会出错,数据拿不到,因此,要注意此处的坑吆! \color{red}{在此过程中,我在data后面的值也加了引号,结果会出错,数据拿不到,因此,要注意此处的坑吆!}在此过程中,我在data后面的值也加了引号,结果会出错,数据拿不到,因此,要注意此处的坑吆!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 动态酷效果实现总结
Dec 27 Javascript
最短的IE判断代码
Mar 13 Javascript
查找iframe里元素的方法可传参
Sep 11 Javascript
jQuery往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
AngularJS 模块化详解及实例代码
Sep 14 Javascript
layer实现弹窗提交信息
Dec 12 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
Jul 12 jQuery
JS实现移动端整屏滑动的实例代码
Nov 10 Javascript
vue组件与复用详解
Apr 08 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
Mar 03 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
Jun 17 Javascript
ECharts地图绘制和钻取简易接口详解
Jul 12 #Javascript
vue cli安装使用less的教程详解
Jul 12 #Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 #Javascript
django js 实现表格动态标序号的实例代码
Jul 12 #Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 #Javascript
微信小程序开发常见问题及解决方案
Jul 11 #Javascript
使用vue for时为什么要key【推荐】
Jul 11 #Javascript
You might like
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
PHP新手入门学习方法
2011/05/08 PHP
php 文件缓存函数
2011/10/08 PHP
php中的路径问题与set_include_path使用介绍
2014/02/11 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
从Python程序中访问Java类的简单示例
2015/04/20 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
用python实现刷点击率的示例代码
2019/02/21 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
python如何实现复制目录到指定目录
2020/02/13 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
如何对python的字典进行排序
2020/06/19 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
化妆品促销方案
2014/02/24 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang