热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小程序搜索功能(模糊查询)

功能:在搜索界面,搜索输入的字符,如果有匹配,就会显示出来。wxml

功能:在搜索界面,搜索输入的字符,如果有匹配,就会显示出来。

《小程序搜索功能(模糊查询)》

wxml















取消





data-name='{
{item.carNum}}' bindtap='btn_name'>













{
{item.carNum}}

{
{item.deviceId}}




试驾
解绑





wxss:(注意:引入了全局的框架WeUI)

.searchbar-result{
margin-top: 0;
font-size: 14px;
}
/* 搜索列表名称 */
.list_name{
position: relative;
width: 100%;
height: 90rpx;
line-height: 90rpx;
border-bottom: 1rpx solid #ddd;
}
/* 列表名称 */
.lab_name{
position: absolute;
left: 30rpx;
}
/* serch-index */
/* 隐藏滚动条 */
::-webkit-scrollbar{
width: 0;
height: 0;
color: transparent;
}
.msg-item {
width: 100%;
height: 145rpx;
border-bottom: 1rpx solid rgb(233, 233, 233);
position: relative;
left:0;
top:0;
overflow: hidden;
}
.msg {
position: absolute;
width: 100%;
height: 150rpx;
left:0;
top:0;
z-index: 100;
background-color: #FFF;
}
.header-img {
position: absolute;
width: 100rpx;
height: 100rpx;
left: 20rpx;
top: 30rpx;
border-radius: 10%;
}
.site-img {
position: absolute;
width: 70rpx;
height: 70rpx;
right: 50rpx;
top: 40rpx;
border-radius: 10%;
}
.user-name {
position: absolute;
left: 150rpx;
top: 33rpx;
font-weight: 600;
font-size: 33rpx;
}
.msg-text {
position: absolute;
left: 150rpx;
bottom: 32rpx;
font-size: 70%;
color: rgb(127, 127, 127);
}
.msg-menu {
position: absolute;
width: 100%;
height: 150rpx;
left:0;
top:0;
z-index: 0;
}
.menu-delete {
position: absolute;
width: 150rpx;
height: 148rpx;
top:1rpx;
right: 0;
background-color: rgb(255, 58, 50);
color:#FFF;
text-align: center;
line-height:150rpx;
}
.menu-mark {
position: absolute;
width: 200rpx;
height: 148rpx;
top:1rpx;
right: 150rpx;
background-color: rgb(200, 199, 205);
color:#FFF;
text-align: center;
line-height:150rpx;
}
/* 滑动效果 */
.inner.del {
position: absolute;
width: 300rpx;
height: 148rpx;
top: 1rpx;
right: -300rpx;
color: #fff;
text-align: center;
line-height: 130rpx;
}
.draw {
border-right: 1px solid #fff;
display: inline-block;
width: 140rpx;
height: 142rpx;
background: #d6cdcd;
}
.delete {
display: inline-block;
width: 140rpx;
height: 142rpx;
background: #fd9903;
}
/* end */
/* 搜索 */
.weui-search-bar__input{
height: 72rpx;
}
.weui-icon-search_in-box{
top:22rpx;
}
.weui-search-bar__cancel-btn{
line-height:70rpx;
}
.weui-icon-clear{
top:4rpx;
}

js

var app = getApp()
Page({
data: {
// 搜索框状态
inputShowed: true,
//显示结果view的状态
viewShowed: false,
// 搜索框值
inputVal: "",
//搜索渲染推荐数据
catList: [],
btnWidth: 300, //删除按钮的宽度单位
startX: "", //收支触摸开始滑动的位置
},
onLoad: function () {
var that = this;
//初始化界面
that.initEleWidth();
},
// 隐藏搜索框样式
hideInput: function () {
this.setData({
inputVal: "",
inputShowed: false
});
},
// 清除搜索框值
clearInput: function () {
this.setData({
inputVal: ""
});
},
// 键盘抬起事件2
inputTyping: function (e) {
console.log(e.detail.value)
var that = this;
if (e.detail.value == ''){
return;
}
that.setData({
viewShowed: false,
inputVal: e.detail.value
});
wx.request({
url: app.globalData.root +"car/search.do",
data: { "openid": app.globalData.openid, "carNum": e.detail.value },
method: 'GET',
header: {
'Content-type': 'application/json'
},
success: function (res) {
that.setData({
carList: res.data
})
}
});
},
// 获取选中推荐列表中的值
btn_name: function (res) {
console.log(res.currentTarget.dataset.index, res.currentTarget.dataset.name);
console.log(res.currentTarget.dataset.index, res.currentTarget.dataset.id);
var that = this;
that.hideInput();
that.setData({
viewShowed: true,
carNum: res.currentTarget.dataset.name,
deviceId: res.currentTarget.dataset.id
});
},
// index-serch
//滑动效果
touchS: function (e) {
if (e.touches.length == 1) { //触摸屏上只有一个触摸点
this.setData({
//设置触摸起始点水平方向位置
//clientX:距离页面可显示区域(屏幕除去导航条)左上角距离,横向为X轴,纵向为Y轴
startX: e.touches[0].clientX
});
}
},
touchM: function (e) {
if (e.touches.length == 1) { // 一个触摸点
//手指移动时水平方向位置
var moveX = e.touches[0].clientX;
//手指起始点位置与移动期间的差值
var disX = this.data.startX - moveX;
//按钮
var btnWidth = this.data.btnWidth;
var txtStyle = "";
if (disX == 0 || disX <0) { //如果移动距离小于等于0,说明向右滑动,文本层位置不变
txtStyle = "left:0px";
} else if (disX > 0) { //移动距离大于0,文本层left值等于手指移动距离
txtStyle = "left:-" + disX + "px";
if (disX >= btnWidth) {
//控制手指移动距离最大值为删除按钮的宽度
txtStyle = "left:-" + btnWidth + "px";
}
}
//获取手指触摸的是哪一项
var index = e.currentTarget.dataset.index;
//设置该项向左偏移的样式,并消除其他项的偏移样式
var list = this.data.carList;
for (var ix in list) {
ix == index ? list[ix].txtStyle = txtStyle : list[ix].txtStyle = "";
}
//更新列表的状态
this.setData({
carList: list
});
}
},
touchE: function (e) {
if (e.changedTouches.length == 1) { //一个触摸点
//手指移动结束后水平位置
var endX = e.changedTouches[0].clientX;
//触摸开始与结束,手指移动的距离
var disX = this.data.startX - endX;
var btnWidth = this.data.btnWidth;
//如果距离小于删除按钮的1/2,不显示删除按钮
var txtStyle = disX > btnWidth / 2 ? "left:-" + btnWidth + "px" : "left:0px";
//获取手指触摸的是哪一项
var index = e.currentTarget.dataset.index;
//设置偏移的样式
var list = this.data.carList;
list[index].txtStyle = txtStyle;
//更新列表的状态
this.setData({
carList: list
});
}
},
//获取元素自适应后的实际宽度
getEleWidth: function (w) {
var real = 0;
try {
var res = wx.getSystemInfoSync().windowWidth;
var scale = (750 / 2) / (w / 2); //以宽度750px设计稿做宽度的自适应
real = Math.floor(res / scale);
return real;
} catch (e) {
return false;
// Do something when catch error
}
},
initEleWidth: function () {
var btnWidth = this.getEleWidth(this.data.btnWidth);
this.setData({
btnWidth: btnWidth
});
},
//点击解绑
unBind: function (e) {
var that = this;
console.log(e.currentTarget.dataset.name)
//获取列表中要删除项的下标
wx.showModal({
title: '提示',
content: '是否确认解绑',
success(res) {
if (res.confirm) {
//解绑
wx.request({
url: app.globalData.root + "car/unBind.do",
data: {
"openid": app.globalData.openid,
"carNum": e.currentTarget.dataset.name
},
method: 'GET',
header: {
'Content-type': 'application/json'
},
success: function (res) {
that.getCars(app.globalData.openid);
}
});
}
}
})
},
//点击试驾
tryDriver: function (e) {
var that = this;
var index = e.currentTarget.dataset.index;
var list = that.data.carList;
if (list[index].state == 5)
return;
wx.showModal({
title: '提示',
content: '是否确认试驾',
success(res) {
if (res.confirm) {
//试驾
wx.request({
url: app.globalData.root + "car/driver.do",
data: {
"openid": app.globalData.openid,
"carNum": e.currentTarget.dataset.name
},
method: 'GET',
header: {
'Content-type': 'application/json'
},
success: function (res) {
if (res.data == 0) {
wx.showToast({
title: '车辆维修尚未结束、不可试驾',
icon: 'none',
})
return;
}
//切换图标
for (var ix in list) {
if (ix == index)
list[ix].state = 5;
}
//更新列表的状态
that.setData({
carList: list
});
}
});
}
}
})
},
//事件处理函数
navmap: function (e) {
wx.navigateTo({
url: '../site/site?deviceId=' + e.currentTarget.dataset.id
})
},
//显示车辆状态
carState: function (e) {
wx.navigateTo({
url: '../state/state?carNum=' + e.currentTarget.dataset.car
})
},
});

原文作者:祈澈姑娘 技术博客:https://www.jianshu.com/u/05f416aefbe1
90后前端妹子,爱编程,爱运营,爱折腾。
坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见,对于博客上面有不会的问题,可以加入qq群聊来问我:473819131.


推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 微信小程序导航跟随的实现方法
    本文介绍了在微信小程序中实现导航跟随的方法。通过设置导航的position属性和绑定滚动事件,可以实现页面向下滚动到导航位置时,导航固定在页面最上方;页面向上滚动到导航位置时,导航恢复到原始位置;点击导航可以平滑跳转到相应位置。代码示例也给出了具体实现方法。 ... [详细]
  • 本文讨论了如何在不使用SearchBar display controller的情况下,单独使用SearchBar并捕获其textChange事件。作者介绍了实际状况,即左侧SliderMenu中的SearchBar需要在主页TableView中显示搜索结果。然后,作者提供了解决方案和步骤,帮助读者实现这一功能。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了停用Vaadin焦点颜色的全局方法。焦点环是一种辅助功能,用于指示字段已从键盘交互获得焦点。每个组件和主题的焦点环样式不同。文章提供了一种方便的方法来找到和修改焦点环样式,通过检查shadow DOM中的标签并覆盖相应的样式。同时,还介绍了使用with或导入样式表的方法来应用修改后的样式。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • android 触屏处理流程,android触摸事件处理流程 ? FOOKWOOD「建议收藏」
    android触屏处理流程,android触摸事件处理流程?FOOKWOOD「建议收藏」最近在工作中,经常需要处理触摸事件,但是有时候会出现一些奇怪的bug,比如有时候会检测不到A ... [详细]
  • java io换行符_Java IO:为什么从stdin读取时,换行符的数字表示出现在控制台上?...
    只是为了更好地理解我在讲座中听到的内容(关于Java输入和输出流),我自己做了这个小程序:publicstaticvoidmain(String[]args)thro ... [详细]
  • 涉及的知识点-ViewGroup的测量与布局-View的测量与布局-滑动冲突的处理-VelocityTracker滑动速率跟踪-Scroller实现弹性滑动-屏幕宽高的获取等实现步 ... [详细]
  • 项目需要实现弹幕,网上参考了各种方法,最后觉得transform+transition实现的效果在移动设备上性能最好,在iphone6和红米4上测试,看不到 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
author-avatar
羽靜幻雲_100
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有