jQuery datepicker minDate变量

时间:2010-03-20 20:23:18

标签: javascript jquery datepicker

我使用了jQuery datepicker。在我的“EndDate”文本框中,我想使用从“StartDate”文本框+ 1中选择的日期。我该怎么做?

我尝试了这个但是没有用。在我的开始日期代码中,我有......

            test = $(this).datepicker('getDate');
            testm = new Date(test.getTime());
            testm.setDate(testm.getDate() + 1);

然后在我的结束日期代码中我有......

minDate: testm,

但结束日期仍然是本月的所有日子。


编辑。我很好奇为什么这不起作用。在我的开始日期datepicker我有这个..

onSelect: function (dateText, inst) {
    test = dateText
}

为什么我不能进入我的结束日期datepicker并说出minDate: test


编辑。仍无效

    $(".dateStartDatePickerBox").datepicker({
        minDate:'-0d',
        onSelect: function(dateText, inst)
        {
            test = $(this).datepicker('getDate');
            testm = new Date(test.getTime());
            testm.setDate(testm.getDate() + 1);

            $("#dateEndDatePickerBox").datepicker("option", "minDate", testm);
        }
    });

    $(".dateEndDatePickerBox").datepicker({
        onSelect: function()
        {

        }
    });

3 个答案:

答案 0 :(得分:21)

您需要在开始日期的更改事件中动态设置最小日期。

类似的东西:

$("#startDate").change(function() {
    test = $(this).datepicker('getDate');
    testm = new Date(test.getTime());
    testm.setDate(testm.getDate() + 1);

    $("#endDate").datepicker("option", "minDate", testm);
});

回答编辑:

您无法执行以下操作:

var test;
$("#myinput").datepicker({
    onSelect: function() { test = $(this).datepicker("getdate"); }
});
$("#myotherinput").datepicker({
    minDate: test
});

myotherinput上设置minDate时,测试未初始化。毫无疑问地设置minDate的过程需要DOM操作,dateopicker在初始化或调用“option”时管理。只需更改用于初始化的变量不会影响已初始化的datepicker。

答案 1 :(得分:0)

您在说是设定最长选择日期吗?

StartDate = new Date("March 20, 2010");
EndDate = new Date("March 21, 2010");

$("#datepicker").datepicker({ minDate: StartDate, maxDate: EndDate, defaultDate: StartDate  });

注意maxDate?这不会让你选择过去的任何日子......

答案 2 :(得分:0)

日期选择器的API documentation似乎确实说它应该使用Date对象,但过去我遇到了这个问题,这就是我解决它的方法。

传递minDate 偏移量,而不是日期。你需要一个函数来获取你的开始日期,添加一个,然后从今天获得偏移量。所以你可以有这样的功能:

function offsetFromToday( someDate ) {
  // clear time offset because we only want to take date into account
  someDate.setHours( 0 );
  someDate.setMinutes( 0 );

  // The number of milliseconds in one day
  var ONE_DAY = 1000 * 60 * 60 * 24;

  // Convert both dates to milliseconds
  someDate = someDate.getTime();
  var today = new Date().getTime();

  // Calculate the difference in milliseconds
  var difference = Math.abs( someDate - today );

  // Convert back to days and return
  return Math.floor( (difference / ONE_DAY) + 1 );
}

所以你只需要提前一天获取开始日期:StartDate.setDate( StartDate.getDate() + 1 )或类似的,然后将其传递给此函数以获取偏移量,然后将 提供给{{1 }}