- “快速的多次”点击bindtap事件方法会重复执行多次,希望下版也能修复。
公司名称 上海秉钧网络科技股份有限公司MP帐号(邮箱) xub@bingjun.cn开发者微信号 iwapzone机型(如iPhone 6s plus) 任意机型操作系统(如iOS 9.3) 是否必现 出现时间 操作路径(即如何操作可以复现该问题) 快速的多次点击绑定了bindtap事件处如官方开发的“自选股”小程序,在首页的搜索框快速点击(要快一点),就会发现打开多个页面。 问题描述(具体问题介绍) 快速的多次点击会执行多次。建议修复我这里虽解决了,但是由于bindtap是经常用到的,会造成太多的不必要的代码,建议官方给出修改 //在APP.js定义检查的变量和方法 [代码]var[代码] [代码]lastTapTime=0[代码][代码]validEvent:[代码][代码]function[代码][代码](e,timeStep){[代码][代码]//有效事件的判断[代码][代码] [代码][代码]if[代码][代码](!e || e.timeStamp){[代码][代码] [代码][代码]return[代码] [代码]true[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]var[代码] [代码]_this=[代码][代码]this[代码][代码];[代码][代码] [代码][代码]var[代码] [代码]time=e.timeStamp;[代码][代码] [代码][代码]//判断是否在当前页面[代码][代码] [代码] [代码] [代码][代码]//设置无效点击,根据自己的需求设置,这里navigateTo切换页面到动画结束需要的时间为500毫秒左右[代码][代码] [代码][代码]if[代码][代码](time - _this.globalData.lastTapTime < 500 && _this.globalData.lastTapTime != 0){[代码][代码] [代码][代码]_this.globalData.lastTapTime = time;[代码][代码]//这里一定更新无效点击的时间[代码][代码] [代码][代码]return[代码] [代码]false[代码][代码];[代码][代码] [代码][代码]}[代码][代码]else[代码][代码]{[代码][代码] [代码][代码]_this.globalData.lastTapTime = time;[代码][代码] [代码][代码]return[代码] [代码]true[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码]//然后在页面的js写上判断 [代码]bindViewTap: [代码][代码]function[代码][代码](event) {[代码] [代码] [代码][代码][代码]if(!app.validEvent(e,500)){ return; } [代码][代码][代码] [代码][代码]var[代码] [代码]url=event.currentTarget.dataset.href;[代码][代码] [代码][代码]wx.navigateTo({[代码][代码] [代码][代码]url: [代码][代码]"../"[代码][代码]+url[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码]//在页面显示的时候一定要初始化公共时间。因为记录的bindtap的timeStamp是根据单一页面的停留时间来计算的[代码]onShow:[代码][代码]function[代码][代码](){[代码][代码] [代码][代码]app.globalData.lastTapTime=0;[代码][代码]}[代码] 问题截图(客户端问题界面截图) 代码片段截图 [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"toufang row"[代码] [代码]bindtap[代码][代码]=[代码][代码]"{{setTask}}"[代码] [代码]data-href[代码][代码]=[代码][代码]"taskSet/taskRewen/index"[代码][代码]>[代码]view[代码][代码]>[代码][代码] [代码]bindViewTap: [代码][代码]function[代码][代码](event) {[代码][代码] [代码][代码] [代码][代码]var[代码] [代码]accountId=app.getAccountId();[代码][代码] [代码][代码]if[代码][代码](!accountId){[代码][代码] [代码][代码]app.getUserInfo([代码][代码]function[代码][代码](userInfo){})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]var[代码] [代码]url=event.currentTarget.dataset.href;[代码][代码] [代码][代码]wx.navigateTo({[代码][代码] [代码][代码]url: [代码][代码]"../"[代码][代码]+url[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码]
2017-02-14 - 出现input和textarea,点击textarea时,无法释放input焦点
公司名称 上海秉钧网络科技有限公司MP帐号(邮箱) xub@bingjun.cn开发者微信号 iwapzone机型(如iPhone 6s plus) 安卓 华为操作系统(如iOS 9.3) 是否必现 必现出现时间 操作路径(即如何操作可以复现该问题) [代码]<[代码][代码]form[代码] [代码]bindsubmit[代码][代码]=[代码][代码]"onSubmit"[代码][代码]>[代码][代码]<[代码][代码]input[代码] [代码]name[代码][代码]=[代码][代码]"title"[代码][代码]/>[代码][代码]<[代码][代码]textarea[代码] [代码]name[代码][代码]=[代码][代码]"content"[代码][代码]>textarea>[代码][代码]<[代码][代码]button[代码] [代码]type[代码][代码]=[代码][代码]"primary"[代码] [代码]formtype[代码][代码]=[代码][代码]"submit"[代码][代码]>发布button>[代码][代码]form>[代码]第一步:点击 input 使其获取焦点(不点击软键盘的“完成”,直接进行第二步) 第二步:点击textarea使其获取焦点 第三步:点击 button问题描述(具体问题介绍) 无法释放input的焦点,导致,无法执行submit 问题截图(客户端问题界面截图) 代码片段截图 [代码]<[代码][代码]form[代码] [代码]bindsubmit[代码][代码]=[代码][代码]"onSubmit"[代码][代码]>[代码][代码]<[代码][代码]input[代码] [代码]name[代码][代码]=[代码][代码]"title"[代码][代码]/>[代码][代码]<[代码][代码]textarea[代码] [代码]name[代码][代码]=[代码][代码]"content"[代码][代码]>textarea>[代码][代码]<[代码][代码]button[代码] [代码]type[代码][代码]=[代码][代码]"primary"[代码] [代码]formtype[代码][代码]=[代码][代码]"submit"[代码][代码]>发布button>[代码][代码]form>[代码]
2017-02-13 - 让人头痛的textarea啊
https://developers.weixin.qq.com/blogdetail?action=get_post_info&docid=593f62856cba6fde787aad78a7946e1b&highline=bindconfirm&token=2110127166&lang=zh_CN [代码]<[代码][代码]form[代码] [代码]bindsubmit[代码][代码]=[代码][代码]"onSubmit"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]input[代码] [代码]name[代码][代码]=[代码][代码]"title"[代码][代码]/>[代码][代码] [代码][代码]<[代码][代码]textarea[代码] [代码]name[代码][代码]=[代码][代码]"content"[代码][代码]>[代码]textarea[代码][代码]>[代码][代码][代码][代码] [代码][代码]<[代码][代码]button[代码] [代码]type[代码][代码]=[代码][代码]"primary"[代码] [代码]formtype[代码][代码]=[代码][代码]"submit"[代码][代码]>发布[代码]button[代码][代码]>[代码][代码][代码][代码][代码][代码][代码]form[代码][代码]>[代码][代码][代码][代码]上面这个表单在安卓机上按如下操作会造成不触发 submit事件 第一步:点击 input 使其获取焦点 第二步:点击textarea使其获取焦点 第三步:不论上两步是否输入了内容,这时点击 虚拟键盘 右上角的向下箭头关闭虚拟键盘 第四步:点击 button 这时候就不会触发 submit事件了。 PS:这里说明一下复现的原理,点击input弹出软键盘,然后不点击"完成",直接点击textarea区域,让软键盘一直存在,会出现input的焦点无法消失,从而出现以上所说的情况出现 如果再次点击 input,然后点击其他地方使其失去焦点。则会立刻触发submit。(点击input后点击textarea好像并不能让input失去焦点) 这个问题主要造成了安卓机器上某些场景表单无法正常提交。 自己测试了几次,得出的结论是: 当input聚焦时,如果没有按“完成”去让input失去焦点的话,再点击textarea就会出现input和textarea同时存在焦点 终于得到官方的答复了 https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=1910105153&docid=e66b72bbf4fa058156d40fa27920d03a
2017-02-13 - bindtap 多次点击,可以打开N个窗口,目前在华为手机上出现,其他机型没测试
[代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"toufang row"[代码] [代码]bindtap[代码][代码]=[代码][代码]"{{setTask}}"[代码] [代码]data-href[代码][代码]=[代码][代码]"taskSet/taskRewen/index"[代码][代码]>[代码]view[代码][代码]>[代码][代码][代码]bindViewTap: [代码][代码]function[代码][代码](event) {[代码][代码] [代码] [代码] [代码][代码]var[代码] [代码]accountId=app.getAccountId();[代码][代码] [代码][代码]if[代码][代码](!accountId){[代码][代码] [代码][代码]app.getUserInfo([代码][代码]function[代码][代码](userInfo){})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]var[代码] [代码]url=event.currentTarget.dataset.href;[代码][代码] [代码][代码]wx.navigateTo({[代码][代码] [代码][代码]url: [代码][代码]"../"[代码][代码]+url[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码]快速的多次点击就会出现打开多过窗口。(第一次加载的页面没有这种情况,是在内页出现)。建议修复或给出解决方案。谢谢 问题已经解决,自己琢磨了一下,可以根据timeStamp的时间差来设置 1、在app.js定义全局变量 lastTapTime [代码]globalData:{[代码][代码] [代码][代码]lastTapTime : 0[代码][代码]}[代码] 2、设置事件的时间差 [代码]var[代码] [代码]app = getApp();[代码] [代码]bindViewTap: [代码][代码]function[代码][代码](event) {[代码][代码] [代码][代码]var[代码] [代码]url=e.currentTarget.dataset.href;[代码][代码] [代码][代码]var[代码] [代码]time=e.timeStamp;[代码][代码] [代码][代码]//设置无效点击,根据自己的需求设置,这里navigateTo切换页面到动画结束需要的时间为500毫秒左右[代码][代码] [代码][代码]if[代码][代码](time - app.globalData.lastTapTime < 500 && app.globalData.lastTapTime != 0){[代码][代码] [代码][代码]app.globalData.lastTapTime = time;[代码][代码]//这里一定更新无效点击的时间[代码][代码] [代码][代码]return[代码][代码];[代码][代码] [代码][代码]} [代码][代码] [代码][代码]//更新有效点击的时间[代码][代码] [代码][代码]app.globalData.lastTapTime = time;[代码][代码] [代码][代码]wx.navigateTo({[代码][代码] [代码][代码]url:url[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码]大家可以尝试封装成方法,调用即可。
2017-01-23