我使用了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()
{
}
});
答案 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 }}