d***@163.com
d***@163.com
  • 发布:2023-09-05 14:56
  • 更新:2023-09-05 16:39
  • 阅读:267

【报Bug】uni-datetime-picker组件隔月选择异常选中

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: window10

HBuilderX类型: 正式

HBuilderX版本号: 3.8.12

手机系统: Android

手机系统版本号: Android 13

手机厂商: 小米

手机机型: 小米10

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

隔月选择,开始时间选当前月的一个时间,结束时间选择下个月或上个月

预期结果:

选中状态异常

实际结果:

确实异常

bug描述:

隔月选择,开始时间选当前月的一个时间,结束时间选择下个月或上个月,比如:先点9月20号(如图1),再点下月4号,就会出现如图二情况(11月8号被选中,此位置就是点击4号的那个位置,且当前页内容已经变成十月时间,但上方月份显示仍然为9月份)。看了源码发现,时间选取事件一共有两个,mouseenter事件触发后会触发click事件,当选择结束时间后,mouseenter事件触发,改变了页面的时间内容,然后click事件触发,由于页面变成了十月份,传值就变成了十月份的内容,所以就多出来了一个选中时间,且在这个过程中没有对正上方月份的修改,所以月份没变。

2023-09-05 14:56 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com

我对比了一下两个版本的代码,这里给一个简单粗暴的解决方法,禁止跨月选择就行了,需要修改一下组件源码,方法如下:
找到项目下/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js文件,搜索_getNextMonthDays和getPreMonthDays方法,这两个方法最后都有一个result.push方法添加日期数据,里面有个disable:xxxxxx属性,将这个属性直接改成true就行了


这两个方法都要改,改完之后会禁止跨月选择,要跨月选择就是手动选择月份

9***@qq.com

9***@qq.com

顶一个,遇到同样的问题,这个问题在2.2.22是没有的,因为日期NaN的bug更新到2.2.24就出现了

要回复问题请先登录注册