当前位置:   article > 正文

微信小程序搜索框功能实现_微信小程序搜索框怎么做

微信小程序搜索框怎么做

说明:本文只涉及了微信小程序前端部分的代码实现,需要的后台列表数据原本已经查询出来了的

思路实现:

1、首先确定自己想要的搜素效果大概是怎么样的,我想到的大概效果是在搜索输入框输入内容时根据搜索内容是否被包含在资讯列表的标题里面,如果包含在里面,那么会被模糊查询出对应的资讯列表里面,并把数据保存在一个新的资讯列表数组里面,这里面可以用 change事件来触发,代码如下:

wxml代码如下:

  1. <van-search
  2. value="{{ value }}"
  3. label="资讯"
  4. placeholder="资讯查询"
  5. input-align="center"
  6. use-action-slot
  7. bind:change="onChange"
  8. bind:search="onSearch"
  9. bind:cancel="onCancel"
  10. >
  11. <view slot="action" bind:tap="onClick">搜索</view>
  12. </van-search>

 

js代码如下:

  1. // 数据初始化
  2. data: {
  3. listImg: [], // 轮播图数据
  4. isLunbo:false,//是否初始化了轮播数据
  5. list: [], // 当前列表数据
  6. searchList:[],//搜素框模糊查询出来的结果
  7. newList:[],//查询的列表数据
  8. page: 1, // 当前页码
  9. id:'10',
  10. limit: 10, // 每页数据量
  11. loading: false, // 是否正在加载
  12. loaded: false ,// 是否已经加载完全部数据
  13. value: '', // 搜索框输入的值
  14. searchview:false
  15. },
  16. // 搜索输入框值变化事件
  17. onChange(e) {
  18. const value = e.detail;
  19. this.setData({
  20. value: value
  21. });
  22. if (value.trim() === '') {
  23. // 输入框没有值或者值为空时,不执行搜索逻辑
  24. this.setData({
  25. searchview: false,
  26. searchList: []
  27. });
  28. return;
  29. }
  30. const searchResult = this.data.list.filter(item => {
  31. return item.title.includes(value);
  32. });
  33. if (searchResult.length > 0) {
  34. this.setData({
  35. searchview: true,
  36. searchList: searchResult
  37. }, () => {
  38. // 在动态渲染完成后,滚动到搜索结果视图
  39. this.setData({
  40. scrollIntoView: 'searchResultView'
  41. });
  42. });
  43. } else {
  44. this.setData({
  45. searchview: false,
  46. searchList: []
  47. });
  48. }
  49. },

上面代码使用了vant框架组件,需要做对应的引入,这里不做详细 说明,详情参考开发文档:

Vant Weapp - 轻量、可靠的小程序 UI 组件库

 2、然后是点击搜索的时候也会搜索出对应的内容,对应触发事件函数的实现如下:

  1. onClick(event) {
  2. console.log("点击事件触发");
  3. console.log(this.data.value);
  4. if (this.data.value.trim() === '') {
  5. wx.showToast({
  6. title: '请输入搜索内容',
  7. icon: 'none'
  8. });
  9. return;
  10. }
  11. const searchResult = this.data.list.filter(item => {
  12. return item.title.includes(this.data.value);
  13. });
  14. if (searchResult.length > 0) {
  15. this.setData({
  16. searchview: true,
  17. searchList: searchResult
  18. }, () => {
  19. // 在动态渲染完成后,滚动到搜索结果视图
  20. this.setData({
  21. scrollIntoView: 'searchResultView'
  22. });
  23. });
  24. } else {
  25. wx.showToast({
  26. title: '未找到相关资讯',
  27. icon: 'none'
  28. });
  29. }
  30. },

 

3、最后是搜索出来的资讯列表内容的展示界面的代码实现:

wxml如下:

  1. <!-- 搜索结果显示框 -->
  2. <view wx:if="{{ searchview }}" class="mask">
  3. <view class="maskContent" bindtap="onMaskClick">
  4. <scroll-view class="scrollview" scroll-y="true" scroll-into-view="searchResultView" scroll-with-animation>
  5. <view wx:for="{{ searchList }}" wx:key="index" bindtap="searchView" data-index="{{ index }}">
  6. <view class="scrollItem">
  7. <text class="text-searchview">{{ searchList[index].title }}</text>
  8. <text class="text-searchview">{{ searchList[index].creationTime }}</text>
  9. </view>
  10. </view>
  11. </scroll-view>
  12. </view>
  13. </view>

wxss代码如下:

  1. /* 遮罩层样式 */
  2. .mask {
  3. position: fixed;
  4. top: 0;
  5. left: 0;
  6. right: 0;
  7. bottom: 0;
  8. background-color: rgba(0, 0, 0, 0.5);
  9. z-index: 9999;
  10. }
  11. /* 搜索结果显示框样式 */
  12. .scrollview {
  13. position: absolute;
  14. top: 50%;
  15. left: 50%;
  16. transform: translate(-50%, -50%);
  17. max-height: 80vh;
  18. width: 90%;
  19. background-color: #fff;
  20. border-radius: 8px;
  21. overflow: hidden;
  22. }
  23. .scrollItem {
  24. padding: 10px;
  25. border-bottom: 1px solid #eee;
  26. }
  27. .text-searchview {
  28. color: #333;
  29. }

js代码如下:

  

  1. searchView(event) {
  2. const index = event.currentTarget.dataset.index;
  3. const selectedInfo = this.data.searchList[index];
  4. console.log("点击搜索结果视图");
  5. console.log(selectedInfo.title);
  6. // 检查搜索框是否为空,若为空则直接返回
  7. if (this.data.value.trim() === '') {
  8. return;
  9. }
  10. // 隐藏遮罩层
  11. this.setData({
  12. searchview: false
  13. });
  14. wx.navigateTo({
  15. url: '/pages/news/news?infoId=' + encodeURIComponent(selectedInfo.id)
  16. });
  17. },

 上面searchView函数实现了,点击搜索出来的资讯列表里面的某一条记录的时候会跳转到具体的资讯详情页面news,至于具体的news页面的这里不做具体说明。基于上述代码完成了一个微信小程序简单的搜索功能

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/154112
推荐阅读
相关标签
  

闽ICP备14008679号