jeDate—选择日期后,再点开重新选择时间,日期会被置为今日日期
1、bug
因为项目中用到了jeDate时间组件,但是一直都只是简单引用了就没管了,最近测试提了一个小bug:选择日期后,再点开重新选择时间,日期会被置为今日日期,后来我自己实践了一下发现不仅仅是选择时间会重现这个问题,只要是选择日期后,再点开然后啥都不干,点击确认日期就会被重置为今日日期。然后去官网看看是我的原因还是控件的原因。
2、查找原因
去官网示例演示了一下我的操作,发现官网示例也是有这个问题,所以我就定位到了是控件的原因
3、源码分析
既然定位了控件问题,然后再定位一下具体原因,我发现问题重现都是通过点击确认键重现的,然后我就到源码中查找点击事件:
如上图所示,发现最后确认获取的值是通过that.selectValue
来确定的。
接下来去初始化函数中找到这个that.selectValue
初始化值了
然后发现getDateTime
这个函数
通过分析发现如果传入值为空,则会以当前日期为初始值,并且分析发现函数传参形式为DD:7
这种,意思为距离当前日期的天数。
4、修改
在通过上面一层一层的分析下来,我们发现我们可以通过设置getDateTime
来初始化选择值
getCurrValue
函数下修改
var result = that.valCell.value;
result = result.substr(0,11);
var nowTime = [jet.parse(jet.getDateTime({}), parmat)];
nowTime = nowTime[0];
var time1 = new Date(result).setHours('0');
var time2 = new Date(nowTime).setHours('0');
var nDays = (parseInt((time1 - time2) / 1000 / 3600 / 24));
var redate = {
DD: nDays
};
that.selectValue = [jet.parse(jet.getDateTime(redate), parmat)];
5、修改之后
非常感谢原作者!
转载自:https://blog.****.net/jx950915/article/details/82108666