首先,需要梳理一下问题的背景和现象:
首先,需要梳理一下问题的背景和现象:
背景:当网页中使用了fastclick插件时
现象:用户在点击日期选择控件时,控件无法弹出日期选择框,无法选择日期。
这是因为fastclick插件会阻止浏览器默认的双击事件(有些日期选择控件在点击两次时才能弹出)和移动端的300ms延迟,从而提升点击体验。然而这个插件的实现方式是,将点击事件改为tap事件,从而可能会对一些控件产生影响。
解决方案:
- 禁用fastclick对页面中所有input、textarea、select、button类型元素的tap事件:
window.addEventListener('load', function() {
FastClick.attach(document.body);
FastClick.prototype.focus = function(targetElement){
targetElement.focus();
};
}, false);
上述代码通过将FastClick原型中的focus方法改写,实现了让input元素获取到焦点的功能。需要注意的是,这种做法会影响整个页面,包括所有input、textarea、select、button类型的元素,可能会对页面的交互体验产生影响。
- 只禁用fastclick对日期选择控件的tap事件:
if ('addEventListener' in document) {
document.addEventListener('DOMContentLoaded', function() {
FastClick.attach(document.body);
FastClick.prototype.focus = function(targetElement){
if (targetElement.tagName === 'INPUT' && targetElement.getAttribute('type') === 'date') {
targetElement.focus();
return false;
} else {
targetElement.focus();
}
};
}, false);
}
上面这段代码对FastClick原型中的focus方法进行了针对性的改写,对于input[type="date"]类型的元素,强制执行targetElement.focus()方法,从而让其弹出日期选择框。对于其他元素,则沿用原来的逻辑。
通过以上两种方式,可以在不影响网页整体操作体验的前提下,解决“fastclick插件导致日期(input[type="date"])控件无法被触发”的问题。
本文标题为:fastclick插件导致日期(input[type=”date”])控件无法被触发该如何解决
基础教程推荐
- 浅析json与jsonp区别及通过ajax获得json数据后格式的转换 2022-12-15
- ajax基本通用代码示例 2022-12-28
- Ajax获取回调函数无法赋值给全局变量的问题 2023-02-15
- 关于 html:CSS – 调整浏览器窗口大小时修复边 2022-09-21
- PHP Ajax实现表格实时编辑 2023-02-01
- 在layer弹出层中通过ajax返回html拼接字符串填充数据的方法 2023-02-23
- 未知大小图片在已知容器中的垂直和水平居中问题 2022-10-16
- 史上最强vue总结来了,这原因我服了 2023-10-08
- vue项目接收二进制流展示表格 2023-10-08
- linux下html文件在浏览器中的显示乱码 2023-10-29