微信小程序搜索功能实现

js

const config = require('../../utils/config.js')
//获取应用实例
const app = getApp()

Page({
  data: {
    search: {
      searchValue: '',
      showClearBtn: false
    },
    pageNum: 1,
    pageSize: 30,
    hasMoreData: true,
    searchResult: []
  },
  onLoad: function (options) {
    // 页面初始化 options为页面跳转所带来的参数
  },
  onReady: function () {
    // 页面渲染完成
  },
  onShow: function () {
    // 页面显示
  },
  onHide: function () {
    // 页面隐藏
  },
  onUnload: function () {
    // 页面关闭
  },
  //输入内容时
  searchActiveChangeinput: function (e) {
    const val = e.detail.value;
    console.log(val);
    this.setData({
      'search.showClearBtn': val != '' ? true : false,
      'search.searchValue': val
    })
  },
  //点击清除搜索内容
  searchActiveChangeclear: function (e) {
    this.setData({
      'search.showClearBtn': false,
      'search.searchValue': ''
    })
  },
  //点击聚集时
  focusSearch: function () {
    console.log("--------------" + this.data.search.searchValue);
    if (this.data.search.searchValue!='') {
      this.setData({
        'search.showClearBtn': true
      })
    }
    console.log("--------------" + this.data.search.showClearBtn);
  },
  searchSubmit:function(){
    var that = this;
    that.setData({
      searchResult: [],
      hasMoreData: true,
      pageNum: 1
    })
    that.doSearch();
  },
  //搜索提交
  doSearch: function () {
    const val = this.data.search.searchValue;
    var sessionKey = wx.getStorageSync(config.TOKEN_KEY);
    if (val) {
      const that = this,
        app = getApp();
      wx.showToast({
        title: '搜索中',
        icon: 'loading'
      });
      wx.request({
        url: config.getFullurl("/getContentList"),
        data: {
          keyword: val,
          pageNum: that.data.pageNum,
          pageSize: that.data.pageSize
        },
        header: {
          'content-type': 'application/x-www-form-urlencoded',
          'WX_TOKEN': sessionKey
        },
        method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
        // header: {}, // 设置请求的 header
        success: function (res) {
          var contentlistTem = that.data.searchResult;
          if (res.data.status == 200) {
            if (that.data.pageNum == 1) {
              contentlistTem = []
            }
            var contentlist = res.data.data.pageData;
            console.log(that.data.pageNum);
            console.log(res.data.data);
            if (that.data.pageNum >= res.data.data.pageInfo.pageCount) {
              that.setData({
                searchResult: contentlistTem.concat(contentlist),
                hasMoreData: false,
                'search.showClearBtn': false
              })
            } else {
              that.setData({
                searchResult: contentlistTem.concat(contentlist),
                hasMoreData: true,
                pageNum: that.data.pageNum + 1,
                'search.showClearBtn': false,
              })
            }

          } else {
            wx.showToast({
              title: res.data.msg,
              success: function () {
                wx.redirectTo({
                  url: '../login/login',
                })
              }
            })
          }
        },
        fail: function () {
          // fail
          wx.showToast({
            title: '加载数据失败',
            icon: none
          })
        },
        complete: function () {
          // complete
          wx.hideToast();
        }
      })
    }
  },
  /**
 * 页面相关事件处理函数--监听用户下拉动作
 */
  onPullDownRefresh: function () {
    this.data.pageNum = 1
    this.doSearch()
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if (this.data.hasMoreData) {
      this.doSearch()
    } else {
      wx.showToast({
        title: '没有更多数据',
      })
    }
  },
})

wxml

    
      
搜索:{{search.searchValue}} {{item.title}} {{item.release_date}}

wxss

    page{
        background-color:#EFEFF4;
    }
    .person__top__wrapper{
        width:100%;
        box-sizing:border-box;
        padding-left:28rpx;
        padding-right:28rpx;
        padding-top:24rpx;
        padding-bottom:24rpx;
        border-top:1rpx solid #e5e5e5;
        border-bottom:1rpx solid #e5e5e5;
        height:178rpx;
        margin-top:30rpx;
        background-color:#fff;
        position: relative;
    }
    .person__top__avatar{
        border:1rpx solid #e5e5e5;
        width:130rpx;
        height:130rpx;
        overflow: hidden;
        box-sizing:content-box;
        float: left;
    }
    .person__top__avatar image{
        width:130rpx;
        height:130rpx;
        border-radius:7rpx;
    }
    .person__top__userinfo{
        right:0;
        overflow: hidden;
        position: absolute;
        left:182rpx;
        box-sizing:border-box;
        top:44rpx;
        color:#000;
        font-family:'微软雅黑';
        font-weight:500;    
        bottom:44rpx;
    }
    .person__top__userinfo .h2{
        width:300rpx;
        height:90rpx;
        line-height:90rpx;
        font-size:36rpx;  
    }
    .person__top__userinfo .h3{
        width:300rpx;
        height:60rpx;
        font-size:30rpx;  
    }
    .person__top__userinfo .h4{
        width:300rpx;
        height:30rpx;
        font-size:24rpx;    
    }
    .person__top__userinfo::after {
      content: " ";
      display: inline-block;
      height: 17rpx;
      width: 17rpx;
      border-width: 2rpx 2rpx 0 0;
      border-color: #C6C6CB;
      border-style: solid;
      -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
              transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
      position: absolute;
      top: 50%;
      margin-top: -10rpx;
      right: 30rpx;
    }
    .person__top__userinfo image{
      display: inline-block;
      height: 34rpx;
      width: 34rpx;
      top: 50%;
      margin-top: -17rpx;
      position: absolute;
      right: 58rpx;
    }
    button::after{
        border:none;
    }
    .person__top__wrapper{
        margin-top:0;
        border-top:none;
    }
    .panel{
      width:100%;
      background: #e5e5e5;
      position: fixed;
      top: 37px;
      left: 0;
      padding:5px;
      box-sizing: border-box;
      z-index: 99;
    }
    .clearfix::after{
      content: "";
      display: block;
      height:0;
      clear: both;
    }
.search__top{
width:100%;
position: fixed;
top:0;
left:0;
background: #fff;
padding:5px;
box-sizing: border-box;
border-top: 1px solid #e5e5e5;
border-bottom: 1px solid #e5e5e5;
z-index: 100;
}
.search__top input{
  background: #e5e5e5;
}

 

你可能感兴趣的:(微信小程序)