微信小程序-双击长按longtap事件与tap事件冲突的解决办法

对于微信事件,不多说,自己看文档https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html?t=20161122

效果

首先,注意一下微信小程序事件触发顺序

   
单击 touchstart → touchend → tap
双击 touchstart → touchend → tap → touchstart → touchend → tap
长按 touchstart → longtap → touchend → tap

看到没 所有的点击事件必然会触发tap - -  Are you kidding me ?

所有的都有tap 那还有个毛线的用- -  可能我比较菜没有悟到其中奥秘 Orz

解决长按,其实方法很简单,提供两种思路吧

1. 触发longtap时加锁,手指移开屏幕时解除锁

2. 通过触发事件来控制事件分发

那么~ 简单粗暴,看代码

wxml:

[html] view plain copy

print?

  1. <scroll-view class="position_common_info" scroll-y="true">
  2. <view class="line" style="margin-top:30rpx;">
  3. </view>
  4. <view wx:for="{{common_position}}" bindtouchstart="mytouchstart" bindtouchend="mytouchend" bindtap="editAddress" data-name="{{item.name}}" data-positionId="{{item.positionId}}" data-gendar="{{item.gendar}}" data-contactTel="{{item.contactTel}}" data-addressName="{{item.addressName}}"
  5. data-customerDesc="{{item.customerDesc}}" data-city="{{item.city}}" data-uid="{{item.uid}}" data-addressAddr="{{item.addressAddr}}" data-positionId="{{item.positionId}}">
  6. <!--<navigator url="/pages/order/address/add_address/add_address?name={{item.name}}
  7. &gendar={{item.gendar}}&contactTel={{item.contactTel}}&addressName={{item.addressName}}
  8. &customerDesc={{item.customerDesc}}&city={{item.city}}&uid={{item.uid}}
  9. &addressAddr={{item.addressAddr}}&positionId={{item.positionId}}">-->
  10. <view class="address_text">
  11. <text class="name">{{item.name}}</text>
  12. <text class="name" wx:if="{{item.gendar==‘1‘}}">先生</text>
  13. <text class="name" wx:else>女士</text>
  14. <text class="tel">{{item.contactTel}}</text>
  15. <view class="address">{{item.addressName}}</view>
  16. </view>
  17. <image class="icon_edit" src="{{imgUrls_edit_original}}"></image>
  18. <view class="lines"></view>
  19. <!--</navigator>-->
  20. </view>
  21. </scroll-view>
  22. <navigator class="btn" url="{{page_edit}}"> 新增</navigator>

主要看

<view wx:for="{{common_position}}" bindtouchstart="mytouchstart" bindtouchend="mytouchend" bindtap="editAddress" >

其他都是连带数据- -  完全可以无视

最最最重要的wxjs即将来临,噔噔噔噔~

[javascript] view plain copy

print?

  1. editAddress: function (event) {
  2. let that = this;
  3. //触摸时间距离页面打开的毫秒数
  4. var touchTime = that.data.touch_end - that.data.touch_start;
  5. console.log(touchTime);
  6. //如果按下时间大于350为长按
  7. if (touchTime > 350) {
  8. wx.showModal({
  9. title: ‘提示‘,
  10. content: ‘是否删除该地址‘,
  11. success: function (res) {
  12. if (res.confirm) {
  13. app.func.req(‘delUserPosition?tel=‘ + ‘13999999999‘ + ‘&positionId=‘ + event.currentTarget.dataset.positionid, function (res) {
  14. if (res.data.result == ‘false‘) {
  15. console.log(res.data.msg);
  16. wx.showToast({
  17. title: res.data.msg,
  18. icon: ‘success‘,
  19. duration: 2000
  20. })
  21. } else {
  22. that.loadData();
  23. }
  24. }, function (res) {
  25. console.log(res.data);
  26. });
  27. }
  28. }
  29. })
  30. } else {
  31. wx.navigateTo({
  32. url: ‘/pages/order/address/add_address/add_address?name=‘ + event.currentTarget.dataset.name
  33. + ‘&gendar=‘ + event.currentTarget.dataset.gendar
  34. + ‘&contactTel=‘ + event.currentTarget.dataset.contacttel
  35. + ‘&addressName=‘ + event.currentTarget.dataset.addressname
  36. + ‘&customerDesc=‘ + event.currentTarget.dataset.customerdesc
  37. + ‘&city=‘ + event.currentTarget.dataset.city
  38. + ‘&uid=‘ + event.currentTarget.dataset.uid
  39. + ‘&addressAddr=‘ + event.currentTarget.dataset.addressaddr
  40. + ‘&positionId=‘ + event.currentTarget.dataset.positionid,
  41. })
  42. }
  43. },
  44. //按下事件开始
  45. mytouchstart: function (e) {
  46. let that = this;
  47. that.setData({
  48. touch_start: e.timeStamp
  49. })
  50. console.log(e.timeStamp + ‘- touch-start‘)
  51. },
  52. //按下事件结束
  53. mytouchend: function (e) {
  54. let that = this;
  55. that.setData({
  56. touch_end: e.timeStamp
  57. })
  58. console.log(e.timeStamp + ‘- touch-end‘)
  59. },

代码都有备注,自己体会吧

时间: 2024-10-12 13:10:35

微信小程序-双击长按longtap事件与tap事件冲突的解决办法的相关文章

微信小程序填坑,wx.request() 内调用setData()方法错误的解决办法

再方法内添加一行代码,把this对象赋值给给一个变量供success()方法内调用 核心代码: var v = this.txt; 完整示例 abc:function(e){//该函数用于和后台交互 // var v = e var v = this.txt; var self=this; //关键代码,这要操作程序无法运行 wx.request({ url: 'https://www.kjch.xyz/jous/hello.do', //仅为示例,并非真实的接口地址 data: { name:

微信小程序中悬浮窗功能的实现(主要探讨和解决在原生组件上的拖动)

问题场景 所谓悬浮窗就是图中微信图标的按钮,采用fixed定位,可拖动和点击. 这算是一个比较常见的实现场景了. 为什么要用cover-view做悬浮窗?原生组件出来背锅了~ 最初我做悬浮窗用的不是cover-view,而是view. 这是简化的代码结构: index.wxml: <view class="move-view" style=" top:{{top}}px;left:{{left}}px;" bindtap="goToHome"

小程序报错:出现脚本错误或者未正确调用 Page()的解决办法

场景是两个人共同开发小程序,我使用的是pc端,另一个同事是用的mac端,我这边能够正常运行项目,代码提交到git,同事check下来发现运行报错: 出现脚本错误或者未正确调用 Page(); 如图 一脸懵逼,在这里也吐槽一下开发工具,报这种错误你让我去哪找问题,感觉就是老虎吃天无从下口,上网搜索全是让我在每个index.js下面加上Page({})这个字段,但是现在微信开发工具已经会默认在每个页面的js文件里面加上Page({})的好吗,几番搜索无果后遂放弃挣扎, 也不知道是不是平时有烧高香的习

微信小程序开发者工具构建npm提示没找到node_modules目录(解决方法)

一.官网给的文档写的不够充分,需要你充分理解npm的使用方法,才能明白的: 二.开始步骤: 1.第一步:npm init 2.第二步:npm install --production 3.第三步: npm i vant-weapp -S --production原文:https://blog.csdn.net/zfeng816/article/details/85095885 原文地址:https://www.cnblogs.com/siyecao2010/p/10951477.html

微信小程序~下拉刷新真机测试不弹回的处理办法

问题描述: 下拉刷新在手机上不会自动回弹,开发工具可以 解决办法: 主动调用wx.stopPullDownRefresh /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { console.log('onPullDownRefresh') // 3秒模拟数据加载 setTimeout(function () { // 不加这个方法真机下拉会一直处于刷新状态,无法复位 wx.stopPullDownRefresh() },

微信小程序image组件开发程序以及相关图片问题参考资料汇总

微信小程序image组件开发程序以及相关图片问题参考资料汇总,希望对大家小程序开发能有一定的参考和借鉴价值.以下汇总主要涉及到微信小程序image组件有关资源路径.缩放和剪裁模式等进行的探讨,无论是对微信小程序新手还是正在开发中的朋友都是很好的小程序学习资料. 微信小程序image组件必备基础知识: image组件默认宽度300px.高度225px image的属性mode有13种模式,其中4种是缩放模式,9种是裁剪模式 image组件开发教程汇总: 微信小程序自定义组件实现图片单指拖动.双指缩

微信小程序学习指南

作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 微信小程序正式公测, 张小龙全面阐述小程序,定档1月9日上线(附90分钟演讲全文) ... 前言:新人第一坑,跳坑指南:修改后,必须保存:ctrl+S: 1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教

微信小程序入门五: wxml文件引用、模版、生命周期

实例内容 wxml文件引用(include.import) 模版 小程序生命周期 实例一: include方式引用header.wxml文件 文件引用对于代码的重用非常重要,例如在web开发中我们可以将公用的header部分和footer等部分进行提取,然后在需要的地方进行引用. 微信小程序里面,是包含引用功能的--include.import.这两个引用文件的标签,使用基本差不多,这里先说一下include. 微信中的视图文件引用,引用过来的都是没有渲染的,基本类似于直接将引用过来的文件复制到

微信小程序之数据绑定(五)

前几篇讲述微信小程序开发工具使用.生命周期和事件. 本次讲述微信小程序数据和视图绑定 >>>数据视图绑定 做前端开发的同学,尤其是WEB前端,每天都要跟视图打交道,假如你是用过jQuery,你就能体会到jQuery的代码冗余和操作不便性,需要手动管理视图和对象的数据一致性. 以下数据和对象等同. 传统的视图和数据绑定 那么微信小程序是通过什么方法来管理视图和对象绑定的呢?状态模式-单向数据流. 状态模式定义一个对象,这个对象可以通过管理其状态从而使得应用程序作出相应的变化. 简单的讲,对