小程序实现搜索框


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 相关文章推荐
JavaScript-世界上误解最深的语言分析
Aug 12 Javascript
js获取时间(本周、本季度、本月..)
Nov 22 Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
浅谈JavaScript的push(),pop(),concat()方法
Jun 03 Javascript
JavaScript实现翻页功能(附效果图)
Feb 16 Javascript
JS实现标签滚动切换效果
Dec 25 Javascript
Vue 源码分析之 Observer实现过程
Mar 29 Javascript
js实现动态添加上传文件页面
Oct 22 Javascript
three.js实现炫酷的全景3D重力感应
Dec 30 Javascript
如何优雅地在vue中添加权限控制示例详解
Mar 07 Javascript
微信小程序仿通讯录功能
Apr 09 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
?生?D片??C字串
2006/12/06 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
PHP 中常量的知识整理
2017/04/14 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
jQuery live
2009/05/15 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
js动态设置div的值下例子
2013/10/29 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python操作json数据的一个简单例子
2014/04/17 Python
Python中的模块和包概念介绍
2015/04/13 Python
python在控制台输出进度条的方法
2015/06/20 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
python3实现名片管理系统
2020/11/29 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
医学实习生自我鉴定
2013/12/12 职场文书
客户表扬信范文
2014/01/10 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
解除劳动合同证明书
2014/09/26 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
Log4j.properties配置及其使用
2021/08/02 Java/Android
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python