小程序实现悬浮搜索框


Posted in Javascript onJuly 12, 2019

本文实例为大家分享了小程序实现悬浮搜索框的具体代码,供大家参考,具体内容如下

悬浮搜索框是当数据界面不断滚动时,搜索框始终悬浮在最上方。来看一下效果图

小程序实现悬浮搜索框

UI代码

<view class="search-wrapper">
  <view class="search-panel">
   <view class="search-section">
    <view class="search-button-wrapper">
     <image class="search-button" src="/images/scan.png" bindtap="scan"></image>
    </view>
    <view class="search-input-wrapper ">
     <input bindinput="bindBarcodeInput" bindconfirm="query" bindfocus="bindBarcodeFocus" bindblur="bindBarcodeBlur" class="search-input" placeholder="扫描或者手动输入条码" value="{{barcode}}" confirm-type="search" />
    </view>
    <view class="search-button-wrapper">
     <image class="search-button" src="/images/search.png" bindtap="query"></image>
    </view>
   </view>
  </view>
  <view class="search-demo" hidden="{{hiddenDropdown}}">
   <button size="mini" bindtap="setDemoData">示例</button>
   <button size="mini" bindtap="clear" style="margin-left:10px;">清空</button>
  </view>
 </view>

样式

.search-wrapper {
 position: fixed;/*悬停搜索框的关键样式*/
 top: 0px;
 left: 0;
 width: 100%;
 z-index: 999;
}
 
.search-panel {
 background-color: #f50;
}
 
.search-section {
 padding: 5px 0px;
 display: flex;
 flex-direction: row;
}
 
.search-demo {
 padding: 5px;
 flex-direction: row;
 background-color: #eee;
 padding-left:42px;  
 align-items: flex-start;
}
 
.search-input-wrapper {
 flex: 8;
 padding: 5px;
 background-color: #eee;
 border-radius: 3px;
}
 
.search-input {
 padding-top: 5px;
}
 
.search-clear {
 float: right;
 width: 32px;
 height: 32px;
 z-index: 998;
}
 
.search-button-wrapper {
 padding-left: 5px;
 padding-right: 5px;
 padding-top:5px; 
}
 
.search-button {
 flex: 1;
 border: none !important;
 color: white !important;
 width: 32px;
 height: 32px;
}

JS代码

//获取应用实例
var app = getApp()
Page({
  data: {
    barcode: "",
    hiddenLoading: true,
    hiddenData: true,
    hiddenDropdown: true,
    hiddenClear:true,
    demoData: 'XXXX',
    Product: {},
  },
  bindBarcodeInput: function (e) {
    this.setData({
      barcode: e.detail.value
    })
  },
  bindBarcodeFocus: function (e) {
    this.setData({
      hiddenDropdown: false,
      hiddenClear:false
    })
  },
  bindBarcodeBlur: function (e) {
    this.setData({
      hiddenDropdown: true,
      hiddenClear:true
    })
  },
  scan: function (e) {
    var that = this;
    wx.scanCode({
      success: function (res) {
        that.setData({
          barcode: res.result
        });
        that.query(e);
      },
      fail: function () {
        that.setData({
          barcode: "",
          hiddenData: true
        });
      },
      complete: function () {
        // complete
      }
    })
  },
  setDemoData: function (e) {
    this.setData({
      barcode: this.data.demoData
    });
  },
  clear: function (e) {
    this.setData({
      barcode: "",
      hiddenData: true
    });
  },
  query: function (e) {
    var url = "https://www.xxx.com/query";//查询数据的URL
    var that = this;
    if (that.data.barcode == undefined
      || that.data.barcode == null
      || that.data.barcode.length <= 0) {
      that.setData({ hiddenData: true });
      wx.showToast({
        title: '请输入条码',
        image: '/images/fail.png',
        duration: 2000
      });
      return;
    }
    wx.request({
      url: url,
      data: { barcode: that.data.barcode },
      method: 'GET',
      success: function (res) {
        var result = res.data;
        if (result.Status != 0) {
          that.setData({ hiddenData: true });
          wx.showToast({
            title: result.Message,
            image: '/images/fail.png',
            duration: 2000
          })
          return;
        }
        that.setData({ Product: result.Data, hiddenData: false });
        wx.showToast({
          title: "获取数据成功",
          image: '/images/ok.png',
          duration: 2000
        })
      },
      fail: function (e) {
        var toastText = '获取数据失败' + JSON.stringify(e);
        that.setData({
          hiddenLoading: !that.data.hiddenLoading,
          hiddenData: true
        });
        wx.showToast({
          title: toastText,
          icon: '',
          duration: 2000
        })
      },
      complete: function () {
        // complete
      }
    })
  }
})

用到的几个图片

小程序实现悬浮搜索框小程序实现悬浮搜索框小程序实现悬浮搜索框小程序实现悬浮搜索框

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

Javascript 相关文章推荐
驱动事件的addEvent.js代码
Mar 27 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
Apr 02 Javascript
node.js中的fs.rmdirSync方法使用说明
Dec 16 Javascript
javascript实现验证IP地址等相关信息代码
May 10 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
Aug 23 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
vue移动端UI框架实现QQ侧边菜单组件
Mar 09 Javascript
JavaScript中var、let、const区别浅析
Jun 24 Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 Javascript
vscode下vue项目中eslint的使用方法
Jan 13 Javascript
初试vue-cli使用HBuilderx打包app的坑
Jul 17 Javascript
详解vue-router的Import异步加载模块问题的解决方案
May 13 Javascript
小程序实现搜索框功能
Mar 26 #Javascript
iview的table组件自带的过滤器实现
Jul 12 #Javascript
es6中比较有用的7个技巧小结
Jul 12 #Javascript
echarts大屏字体自适应的方法步骤
Jul 12 #Javascript
javascript实现简易聊天室
Jul 12 #Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 #Javascript
小程序实现短信登录倒计时
Jul 12 #Javascript
You might like
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
Python实现二维数组输出为图片
2018/04/03 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
读书活动总结
2014/04/28 职场文书
教师年度考核个人总结
2015/02/12 职场文书
师范生教育见习总结
2015/06/23 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
Java数据结构之堆(优先队列)
2022/05/20 Java/Android
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers