小程序实现悬浮搜索框


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 相关文章推荐
9个JavaScript评级/投票插件
Jan 18 Javascript
Webkit的跨域安全问题说明
Sep 13 Javascript
javascript实现行拖动的方法
May 27 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
Nov 29 Javascript
javascript产生随机数方法汇总
Jan 25 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
Mar 11 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
微信小程序progress组件使用详解
Jan 31 Javascript
Angular数据绑定机制原理
Apr 17 Javascript
express + jwt + postMan验证实现持久化登录
Jun 05 Javascript
vue+element表格导出为Excel文件
Sep 26 Javascript
javascript的setTimeout()使用方法总结
Nov 20 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 分页分组类
2009/12/10 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
详解C++编程中一元运算符的重载
2016/01/19 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
python识别验证码的思路及解决方案
2020/09/13 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
十佳青年个人事迹材料
2014/01/28 职场文书
促销活动计划书
2014/05/02 职场文书
比赛口号大全
2014/06/10 职场文书
师范类求职信
2014/06/21 职场文书
介绍信样本
2015/01/31 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis
关于vue-router-link选择样式设置
2022/04/30 Vue.js