jQuery DatePicker - 日期必须相隔一天,但如果开始日期是明天则有错误

时间:2013-05-31 09:50:25

标签: jquery-ui jquery-ui-datepicker

我正在使用jQuery DatePicker确保出发日期在抵达日期后至少1天。我从this question获得了代码。

但是,我刚刚注意到,如果我选择明天(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 );
  }
});

1 个答案:

答案 0 :(得分:1)

好的总结一下评论中的解决方案(由我提供,我不仅仅是在回答)。

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

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

未正确添加日期。在添加日期时,不考虑月份,因此任何月末都会导致创建这样的日期:

32/05/2013

当然,这个月没有第32个。

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

jsfiddle.net/9mSxk/3