0

我正在使用 jQuery DatePicker 来确保出发日期至少比到达日期晚 1 天。我从这个问题中得到了执行此操作的代码。

但是,我刚刚注意到,如果我选择明天(2013 年 5 月 31 日)作为到达日期,则出发日期将设置为 2019 年 1 月 10 日!但如果我选择明天之后的到达日期,它似乎工作正常。关于这出了什么问题的任何想法?谢谢你的帮助。

这是一个JSFiddle,其中包含显示问题的代码。

这是 JS 本身:

$(".datepicker_arrival").datepicker({
  dateFormat: 'dd/mm/yy',
  minDate: new Date(),
  onSelect: function(dateText, inst) {
    if($('.datepicker_departure').val() == '') {
      var current_date = $.datepicker.parseDate('dd/mm/yy', dateText);
      current_date.setDate(current_date.getDate()+1);
      $('.datepicker_departure').datepicker('setDate', current_date);
    }
  },
  onClose: function( selectedDate, test) {
     var  MyDateString = ('0' + (parseInt(test.selectedDay)+1)).slice(-2) + '/'
             + ('0' + (test.selectedMonth+1)).slice(-2) + '/'
             + test.selectedYear;
      $( ".datepicker_departure" ).datepicker( "option", "minDate", MyDateString);
  }
});

$(".datepicker_departure").datepicker({
  dateFormat: 'dd/mm/yy',
  minDate: new Date(),
  onClose: function( selectedDate ) {
    $( ".datepicker_arrival" ).datepicker( "option", "maxDate", selectedDate );
  }
});
4

1 回答 1

1

好的,在评论中总结解决方案(由我提供,我不只是在寻找答案)。

错误是由这段代码引起的:

var  MyDateString = ('0' + (parseInt(test.selectedDay)+1)).slice(-2) + '/'
             + ('0' + (test.selectedMonth+1)).slice(-2) + '/'
             + test.selectedYear;

这没有正确地在日期中添加一天。添加日期时,没有考虑月份,因此任何月底都会导致创建这样的日期:

2013 年 5 月 32 日

当然,没有每月 32 日。

因此,可以在此处找到建议的修复代码:

jsfiddle.net/9mSxk/3

于 2013-06-03T08:14:30.707 回答