微信小程序搜索框功能实现

这篇具有很好参考价值的文章主要介绍了微信小程序搜索框功能实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

思路实现:

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

wxml代码如下:

 <van-search
  value="{{ value }}"
  label="资讯"
  placeholder="资讯查询"
  input-align="center"
  use-action-slot
  bind:change="onChange"
  bind:search="onSearch"
  bind:cancel="onCancel"
>
  <view slot="action" bind:tap="onClick">搜索</view>
</van-search>

 文章来源地址https://www.toymoban.com/news/detail-861193.html

js代码如下:

 // 数据初始化
  data: {
    listImg: [], // 轮播图数据
    isLunbo:false,//是否初始化了轮播数据
    list: [], // 当前列表数据
    searchList:[],//搜素框模糊查询出来的结果
    newList:[],//查询的列表数据
    page: 1, // 当前页码
    id:'10',
    limit: 10, // 每页数据量
    loading: false, // 是否正在加载
    loaded: false ,// 是否已经加载完全部数据
    value: '', // 搜索框输入的值
    searchview:false
  },

  // 搜索输入框值变化事件
  onChange(e) {
    const value = e.detail;
  
    this.setData({
      value: value
    });
  
    if (value.trim() === '') {
      // 输入框没有值或者值为空时,不执行搜索逻辑
      this.setData({
        searchview: false,
        searchList: []
      });
      return;
    }
  
    const searchResult = this.data.list.filter(item => {
      return item.title.includes(value);
    });
  
    if (searchResult.length > 0) {
      this.setData({
        searchview: true,
        searchList: searchResult
      }, () => {
        // 在动态渲染完成后,滚动到搜索结果视图
        this.setData({
          scrollIntoView: 'searchResultView'
        });
      });
    } else {
      this.setData({
        searchview: false,
        searchList: []
      });
    }
  },

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

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

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

onClick(event) {
    console.log("点击事件触发");
    console.log(this.data.value);
    if (this.data.value.trim() === '') {
      wx.showToast({
        title: '请输入搜索内容',
        icon: 'none'
      });
      return;
    }
    const searchResult = this.data.list.filter(item => {
      return item.title.includes(this.data.value);
    });
    if (searchResult.length > 0) {
      this.setData({
        searchview: true,
        searchList: searchResult
      }, () => {
        // 在动态渲染完成后,滚动到搜索结果视图
        this.setData({
          scrollIntoView: 'searchResultView'
        });
      });
    } else {
      wx.showToast({
        title: '未找到相关资讯',
        icon: 'none'
      });
    }
  },

 

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

wxml如下:

 <!-- 搜索结果显示框 -->
<view wx:if="{{ searchview }}" class="mask">
  <view class="maskContent" bindtap="onMaskClick">
    <scroll-view class="scrollview" scroll-y="true" scroll-into-view="searchResultView" scroll-with-animation>
      <view wx:for="{{ searchList }}" wx:key="index" bindtap="searchView" data-index="{{ index }}">
        <view class="scrollItem">
          <text class="text-searchview">{{ searchList[index].title }}</text>
          <text class="text-searchview">{{ searchList[index].creationTime }}</text>
        </view>
      </view>
    </scroll-view>
  </view>
</view>

wxss代码如下:

/* 遮罩层样式 */
.mask {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 9999;
}

/* 搜索结果显示框样式 */
.scrollview {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  max-height: 80vh;
  width: 90%;
  background-color: #fff;
  border-radius: 8px;
  overflow: hidden;
}

.scrollItem {
  padding: 10px;
  border-bottom: 1px solid #eee;
}

.text-searchview {
  color: #333;
}

js代码如下:

  

searchView(event) {
    const index = event.currentTarget.dataset.index;
    const selectedInfo = this.data.searchList[index];
    console.log("点击搜索结果视图");
    console.log(selectedInfo.title);

    // 检查搜索框是否为空,若为空则直接返回
    if (this.data.value.trim() === '') {
      return;
    }

    // 隐藏遮罩层
    this.setData({
      searchview: false
    });
  
    wx.navigateTo({
      url: '/pages/news/news?infoId=' + encodeURIComponent(selectedInfo.id)
    });
  },

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

 

 

 

 

到了这里,关于微信小程序搜索框功能实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序怎么实现拍照功能,以及授权,拍完照保存到本地。

    写微信小程序就是要不停的翻阅官方文档查阅所需要的需求。 API的使用说明 wx.getSetting 获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限 scope.camera相机 wx.authorize 提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或

    2024年02月02日
    浏览(60)
  • 微信小程序ibeacon搜索功能制作

    以下是一个完整的微信小程序代码示例,演示如何实现iBeacon搜索功能: 在上述代码中,我们使用了 data 属性来存储搜索到的iBeacon设备信息。在 onBeaconUpdate 回调函数中,我们更新了 beacons 数据,以便在页面中展示搜索到的设备信息。 以下是相应的WXML布局代码示例: 在上面的

    2024年02月09日
    浏览(54)
  • 微信小程序之页面内搜索查询功能

    具体操作可以参考博客原生微信小程序,搜索框(search)组件和微信小程序页面内搜索查询(无后台),再还有不懂的地方,可以直接去浏览我的demo 项目的github地址点击跳转,欢迎各位浏览和star✨。 原生微信小程序,搜索框(search)组件 微信小程序页面内搜索查询(无后台)

    2024年02月11日
    浏览(35)
  • 微信小程序组件 —— 带搜索功能的选择器

    微信小程序组件 —— 带搜索功能的选择器 效果 组件 search-picker 文件 wxml 文件: wxss 文件: 注:/colorui/icon.wxss 文件来自 ColorUI 。 js 文件: 使用 wxml 文件: js 文件: 参考:https://blog.csdn.net/cwin8951/article/details/116160189

    2024年02月16日
    浏览(38)
  • 微信小程序怎么开通支付功能?

    对于一些想通过小程序卖货的企业商家来说,在申请小程序后需要同时开通微信支付功能,才能在小程序上进行交易。那么关于微信小程序怎么开通支付功能,下面给大家说一说。 一、注册非个人主体的小程序账号 不管你是通过公众号后台快速注册还是微信公众平台官网直

    2024年02月12日
    浏览(43)
  • uniapp - 微信小程序利用腾讯地图插件实现搜索地点/位置功能,uniapp小程序平台端使用腾讯地图做搜索城市位置+底部自动根据关键字联想其他相关位置(详细示例源码,一键复制开箱即用!)

    在uniapp微信小程序开发中,安装使用腾讯地图插件,并利用腾讯地图功能完成目的地、城市位置、名称等搜索功能,并且在下拉框中自动 “联想” 相关的地点位置。 最终效果图有点模糊,你可以按照教程一路复制就可以搞定了。

    2024年02月03日
    浏览(112)
  • 微信小程序搜索框吸顶效果实现

    主页要做一个搜索框,滑动主页页面的时候,搜索框始终位于导航栏下面,位置不变,不随页面的滑动而滑动,这种效果被称为”吸顶“效果。 点击搜索框,弹出上层搜索详情的视图层,搜索详情的整个页面覆盖在主页面之上,并且也覆盖住主要搜索框。 主页搜搜框设置

    2024年02月13日
    浏览(59)
  • 【微信小程序支付功能】uniapp实现微信小程序支付功能

    场景 :要实现公司微信小程序的电商模块微信支付功能 一.实现步骤和思路 在登录状态,登录的时候获取到code,利用code获取到 openid: https://blog.csdn.net/weixin_45308405/article/details/128868377?spm=1001.2014.3001.5501 在manifest.json文件“App模块配置”项的“Payment(支付)”下,勾选“微信支付

    2024年02月11日
    浏览(60)
  • 微信小程序(第七章)- 搜索框的实现

    外部容器i 内部容器 两者关系:外部容器包裹内部容器,而且内部容器正好在we外部容器的居中(水平垂直居中)位置。 可在微信小程序中使用view,可以在view里面定义内容。 wxml文件 - html文件 wxss文件 - css文件 js文件 -js文件 json文件 - 配置文件 删除index.wxml里面的demo(模板)代

    2024年02月09日
    浏览(54)
  • 微信小程序 顶部搜索框滑动伸缩效果的实现

    提示:实现搜索框跟随用户滑动页面,实现伸缩效果 微信小程序 顶部搜索框滑动伸缩动画的实现 提示:主要用到了微信小程序的view-scroll bindscroll 1:确定一个控制搜索框伸缩的范围。 2:通过bindscroll事件获取e.detail.scrollTop;即用户滑动的位置 3:计算当前位置占伸缩范围的

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包