禁用2个日期选择器jquery的过去日期

时间:2019-07-21 09:56:33

标签: javascript jquery

我有2个日期选择器,从日期到日期都有。我可以禁用第一个日期选择器的过去日期。但这不适用于第二个。我已经看了第二个的行为。当我单击第二个时,过去的日期被禁用。但是,当我单击第一个然后转到第二个时,它不再起作用。

$("#date1").datepicker({
    dateFormat: 'dd-mm-yy',
    minDate:0, 
    onSelect: daysNumber,
    onClose: function( selectedDate ) {
         var dParts = selectedDate.split('-');
         var days = new Date(dParts[2] + '/' +
                    dParts[1] + '/' +
                    (+dParts[0] + 30)
               );

    $( "#date2" ).datepicker( "option", "minDate", days);
    }
});

var plusOne = $('#date2').datepicker('getDate')+1;

$("#date2").datepicker({
    dateFormat: 'dd-mm-yy',
    onSelect: daysNumber,  
    minDate:plusOne,
});

有人可以帮助我吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

最简单的解决方案可能是为第一个日期选择器获取Date对象值,而不是尝试解析selectedDate字符串。

在这种情况下,您可以使用.getTime()来获取纪元,然后只需添加一天中的毫秒数。然后,您从纪元创建一个new Date,并使用它来设置minDate。

$("#date1").datepicker({
  dateFormat: 'dd-mm-yy',
  minDate: 0,
  onSelect: daysNumber,
  onClose: function(selectedDate) {
    $("#date2").datepicker("option", "minDate", plusOne());
  }
});

var plusOne = function() {
  var d1 = $('#date1').datepicker('getDate');
  var msInDay = 24 * 60 * 60 * 1000; // hours * mins * secs * ms
  if (!d1) return 0;
  else return new Date(d1.getTime() + msInDay);
}

$("#date2").datepicker({
  dateFormat: 'dd-mm-yy',
  onSelect: daysNumber,
  minDate: plusOne(),
});