小程序实现搜索框

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

搜索框

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

思路

在搜索框中输入关键词时,应该会向服务器发送请求,因为没有相关接口,所以我就模拟数据啦,用文档中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后面的值也加了引号,结果会出错,数据拿不到,因此,要注意此处的坑吆!

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

(0)

相关推荐

  • 微信小程序实现搜索功能并跳转搜索结果页面

    本文实例为大家分享了微信小程序实现搜索功能,并跳转搜索结果页面,供大家参考,具体内容如下 搜索页面: search.wxml页面: <view class="form"> <input class="searchInput" value='{{keyWord}}' bindconfirm='goSearch' placeholder="请输入搜索关键字" type="text" /> </view

  • 微信小程序城市选择及搜索功能的方法

    实现搜索城市功能 参考 微信小程序 之『仿美团城市选择 城市切换』 https://github.com/cinoliu/-selectCity js文件 // pages/address/address.js var app = getApp() Page({ data: { searchLetter: [], showLetter: "", winHeight: 0, cityList: [], isShowLetter: false, scrollTop: 0,//置顶高度 sc

  • 小程序获取当前位置加搜索附近热门小区及商区的方法

    本文详细的介绍了小程序获取当前位置加搜索附近热门小区及商区的方法,分享给大家 两种方法:一种是腾讯地图获取,另一种是百度地图获取 我用的是腾讯地图获取步骤如下 1.话不多说,直接上干货 实现上图效果,主要技术是获取微信小程序地理位置,得到经纬度,使用微信小程序JavaScript SDK逆地址解析和地点搜索实现 2.微信小程序JavaScript SDK 申请开发者密钥(key):https://lbs.qq.com/qqmap_wx_jssdk/method-reverseGeocoder.h

  • 小程序实现搜索界面 小程序实现推荐搜索列表效果

    本文实例为大家分享了小程序实现搜索界面的具体代码,供大家参考,具体内容如下 效果图: 实现代码: <view class="page"> <view class="page__bd"> <view class="weui-search-bar"> <view class="weui-search-bar__form"> <view class="weui-sear

  • 微信小程序搜索功能(附:小程序前端+PHP后端)

    开发需求 微信小程序已经是非常火了,而且学习也比较容易,但是对于初学者来说还是一件比较伤脑筋的事,接下来给大家分享一下小程序搜索的思路. 流程 1.表单(输入框.提交按钮.提交的name值) 2.接收表单数据(js获取表单name=keyword的值) 3.通过wx.request向服务器后端发起请求查询数据库 4.返回JSON格式的数据给小程序,js解析渲染到小程序前端展示 界面 代码 index.wxml <!-- 标题 --> <view class="title&quo

  • 微信小程序搜索组件wxSearch实例详解

    wxSearch优雅的微信小程序搜索框 一.功能 支持自定义热门key 支持搜索历史 支持搜索建议 支持搜索历史(记录)缓存 二.使用 1.将wxSearch文件夹整个拷贝到根目录下 2.引入 // wxml中引入模板 <import src="/wxSearch/wxSearch.wxml"/> <template is="wxSearch" data="{{wxSearchData}}"/> // wxss中引入 @i

  • 微信小程序首页的分类功能和搜索功能的实现思路及代码详解

    就在昨天,微信宣布了微信小程序开发者工具新增"云开发"功能 下载最新的开发者工具,现在无需服务器即可实现小程序的快速迭代! 分类功能和搜素功能的效果图 1.首页分类功能的实现 boxtwo方法(.js文件) boxtwo: function (e) { var index = parseInt(e.currentTarget.dataset.index) this.setData({ HomeIndex: index }) }, 当在首页点击 分类导航时,会触发这个方法,并传回当前点击

  • 微信小程序实现全局搜索代码高亮的示例

    需求 最近在做微信小程序的时候,需要实现在搜索框的输入内容的时候实现全局匹配实现高亮效果,目前的思路是,递归后台来返回的数据,并将对象的value值替换为需要的dom节点,并且通过rich-text来实现,高亮效果. 代码 wxml: <view class='homePage'> <input bindinput="bindKeyInput"></input> <view wx:for="{{newJson}}" wx:f

  • 微信小程序实现搜索指定景点周边美食、酒店

    本文为大家分享了微信小程序实现指定景点周边的美食.酒店等搜索,供大家参考,具体内容如下 以下为效果图,使用的是腾讯地图位置服务微信小程序JavaScript SDK,首先要申请腾讯地图位置服务的开发密钥,然后进行开发. wxml: <view style='width:100%;height:{{height}}px;'> <map id="map" longitude='{{poi.longitude}}' latitude='{{poi.latitude}}' s

  • 微信小程序实现搜索历史功能

    结合了微信给的资料,马马虎虎摸索出了一些东西,下面说下一下微信小程里序搜索历史功能的实现,下图是实现效果. 首先,定义历史记录的显示风格和方式,在下用的是列表模式,没有使用什么比较酷炫的套路. <view wx:for="{{sercherStorage}}" wx:key="item.id"> <view class="liclass" style="color:#9E9E9E;border-bottom:0;fon

随机推荐