2

我有以下代码

$("#in").datepicker({
    minDate: 0,
    onSelect: function (dateText, inst) {
        dateText = new Date(dateText);
        dateText = dateText.getDate()+1;
        $('#out').datepicker("option", 'minDate', dateText);
    }
});

示例: https ://jsfiddle.net/ANYTA/1/

但是,out日期选择器添加了 10 天而不是 1 天。可以修改什么以使其按预期工作?非常感谢你

4

2 回答 2

6
dateText = dateText.setDate(dateText.getDate()+1);

笔记

somedate.setDate(days);
  1. 是整数

  2. 预期值为1-31,但允许使用其他值:

      2.1) 0 将导致上个月的最后一个小时

       2.1) -1 将导致上个月最后一小时之前的一小时

  1. 当月份有 31 天时,则 32 将导致下个月的第一天

  2. 如果月份有 30 天,则 32 将导致下个月的第二天


你的代码应该

$("#in").datepicker({
    minDate: 0,
    onSelect: function(dateText, inst) {
       var actualDate = new Date(dateText);
       var newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+1);
        $('#out').datepicker('option', 'minDate', newDate );
    }
});

$("#out").datepicker();

演示

于 2012-05-09T06:45:04.003 回答
3

尝试:

dateText.setDate(dateText.getDate() + 1);

getDate 返回一个月中的 1-31 天,因此添加一个没有意义。

setDate 设置月份中的某一天,因此,如果您将一天添加到该月的某一天,那么您实际上是在添加一天。

(此外,setDate 足够聪明,可以处理翻转,即 1 月 31 日 + 1 == 2 月 1 日)

于 2012-05-09T06:43:37.673 回答