zoukankan      html  css  js  c++  java
  • fastclick插件 导致 input[type="date"] 无法触发问题解决方案

    鄙人才疏学浅,新人一枚,不足之处还请谅解,写下这个也只是为了给大家分享一下我解决这个BUG的方法,也是自己的一个笔记。

    首先,我们使用fastclick插件的初衷是解决“tap”事件“点透”的BUG;fastclick与tap都是利用“touch”事件来模拟“click”事件的;

    然后我们来大致的了解一下fastclick的工作原理(来自网上的copy):

    在我们的app中跟踪所有的TouchStart事件,在接收到touchend事件的时候,触发一个click事 件;

    使用方法可找度娘;

    但是问题来了,当使用了fastclick的时候,我们发现“日期”控件无法被触发了,是正常的点击时无法被触发,如果长按0.5S的样子还是可以触发的,但是问题还是已经存在,必须解决!

    通过阅读fastclick的源码发现里面有个这个方法

    /**
    * On touch end, determine whether to send a click event at once.
    *
    * @param {Event} event
    * @returns {boolean}
    */
    FastClick.prototype.onTouchEnd = function(event) {

    反正意思在上面也提到过,就是在接受到touchend事件的时候,触发一个click事件;

    那么我的解决方法就是:

    当touchend的时候我们判断一下他的event.target到底是啥,如果是date我们就不玩了,不要你fastclick了,用原生的去触发不就OK了,来个return false;

    我的代码:

    FastClick.prototype.onTouchEnd = function(event) {

      /*加上这个*/

      if(event.target.hasAttribute("type") && event.target.getAttribute("type") == "date"){
        return false;
      }

    这里if里面的条件就随便写咯,自己根据项目需求而定,反正你要的是到达某个特殊的条件时给他退出就好了;

    鄙人才疏学浅,新人一枚,不足之处还请谅解,写下这个也只是为了给大家分享一下我解决这个BUG的方法,也是自己的一个笔记。

    !!转载还请确保是最新版本,谢谢

  • 相关阅读:
    python2.7下同步华为云照片的爬虫程序实现
    python 下字符串格式时间比较
    C# Socket通信 小案例
    win 10 安装 mysql解压版 步骤
    Android 连接 SQL Server (jtds方式)——下
    Android 连接 SQL Server (jtds方式)——上
    Android 项目建立步骤
    ubuntu 配置android开发环境
    ubuntu 安装eclipse
    ubuntu 配置Java jdk
  • 原文地址:https://www.cnblogs.com/AlexBlogs/p/4947019.html
Copyright © 2011-2022 走看看