laydate设置时间范围的一个bug(开始时间大于结束时间)

讨论 已结
2 1375
岁月小偷
悬赏:20飞吻

场景:laydate range:true type:datetime 先选中开始日期然后点下面的选择时间选择一个开始时间,最好是大于00:00:00的任意一个,然后再回去点第二个日期,点击同一天,这时候控件的确定按钮就显示可以点击了,也就是说控件认为目前的输入符合条件了,点击之后就会出现开始日期大于结束日期的情况,因为默认的结束日期时分秒是00:00:00。
修复:

代码:
      if(that.endState){ //重新选择
setDateTime();
delete that.endState;
delete that.endDate;
that.startState = true;
tds.removeClass(THIS + ' ' + ELEM_SELECTED);
td.addClass(THIS);
} else if(that.startState){ //选中截止
td.addClass(THIS);

that.endDate ? lay.extend(that.endDate, YMD) : (
that.endDate = lay.extend({}, YMD, that.endTime)
);

//判断是否顺时或逆时选择
if(that.newDate(YMD).getTime() <= that.newDate(that.startYMD).getTime()){
var startDate = lay.extend({}, that.endDate, {
hours: that.startDate.hours
,minutes: that.startDate.minutes
,seconds: that.startDate.seconds
});
lay.extend(that.endDate, that.startDate, {
hours: that.endDate.hours
,minutes: that.endDate.minutes
,seconds: that.endDate.seconds
});
that.startDate = startDate;
}

options.showBottom || that.done();
that.stampRange(); //标记范围内的日期
that.endState = true;
if (that.newDate(YMD).getTime() === that.newDate(that.startYMD).getTime()
&& that.newDate(that.startTime).getTime() > that.newDate(that.endTime).getTime()) {
// 如果选择的是同一天并且目前时间的选择开始时间大于结束时间那么结束状态是fasle
that.endState = false;
}
that.done(null, 'change');
} else { //选中开始
td.addClass(THIS);
setDateTime();
that.startState = true;
}
// lay(that.footer).find(ELEM_CONFIRM)[that.endDate ? 'removeClass' : 'addClass'](DISABLED);
// 应该是根据结束状态来判断是否可用点击
lay(that.footer).find(ELEM_CONFIRM)[that.endState ? 'removeClass' : 'addClass'](DISABLED);
回帖
  • 感谢分享[good]
    0 回复
  • 补充一个bug修改的地方,如果range有初始值,点击开始日期的时候不会清空以前的日期范围的bug。
    0 回复