小程序实现搜索框


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 相关文章推荐
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 Javascript
javascript动态控制服务器控件实例
Sep 05 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
Jun 09 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
理解javascript中的严格模式
Feb 01 Javascript
用jQuery向div中添加Html文本内容的简单实现
Jul 13 Javascript
PHP捕捉异常中断的方法
Oct 24 Javascript
jQuery基本选择器和层次选择器学习使用
Feb 27 Javascript
浅谈使用React.setState需要注意的三点
Dec 18 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
详解基于vue-cli3快速发布一个fullpage组件
Mar 08 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
Aug 16 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
PHP控制网页过期时间的代码
2008/09/28 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
JS 控制非法字符的输入代码
2009/12/04 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
Django使用多数据库的方法
2017/09/06 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
Python代码的打包与发布详解
2014/07/30 Python
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
Python抓取手机号归属地信息示例代码
2016/11/28 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
几个Shell Script面试题
2014/04/18 面试题
移动通信行业实习自我鉴定
2013/09/28 职场文书
学习心得体会
2014/01/01 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python