我已经阅读了很多不同的答案,但我很好奇为什么我这样做的具体方式(我在网上找不到)并没有产生预期的结果。
用户选择deliverydate,之后,Pickdate datepicker的交货日期最长为14天:
$( "#deliverydate" ).datepicker({
defaultDate: 1,
onClose: function( selectedDate ) {
$( "#pickupdate" ).datepicker( "option", "minDate", selectedDate, "defaultDate", selectedDate, "maxDate", (Date.parse(selectedDate) - Date.today())/1000/60/60/24 + 14 );
}
});
我认为运行计算的方法是计算从今天起所选日期的天数,然后再加上14(因为maxDate可以采用一个参数,它是一个表示从今天开始的天数的整数)。
注意我有Date.js
答案 0 :(得分:0)
您只能将datepicker("option", option, value)
语法用于一个选项。由于您使用$('#pickupdate')
datepicker的多个选项,因此您需要将它们指定为JSON,就像您对$(#deliverydate)
所做的那样。像这样:
$('#pickupdate').datepicker({
minDate: selectedDate,
defaultDate: selectedDate,
maxDate: ((Date.parse(selectedDate) - Date.today())/1000/60/60/24 + 14 )
});
请参阅this JSFiddle进行工作演示。
另见this Stack Overflow question关于使用带有多个选项的jQuery Datepicker。
最后,您应该考虑更改为Moment.js。 last release of Date.js was 2007,因此很长一段时间内没有任何重大或次要版本。
答案 1 :(得分:0)
经过大量的挖掘后确定......呃jQuery Datepicker不是很好的文档。
两个重要的事实:
1. Datepicker只能在ONCE初始化,此后为了更改设置,您必须使用option
2.根据Datepicker,您应该能够在选项 - 值对的映射中提供多个选项,但我没有做任何事情使它工作,并且他们的文档看起来就像单个选项,所以...无论如何,我只是设置3单独选择。
我开始工作的方式如下:
$( "#deliverydate" ).datepicker({
defaultDate: 1, // 1 day from today
numberOfMonths: 1,
minDate: 0,
maxDate: <%= ENV["Days_in_advance"].to_i %>,
dateFormat: "M d, yy",
// despite the docs, it doesnt' look like you can set multiple options at once, so I'm doing it individually 3X below.
onClose: function( selectedDate ) {
deliverydate = Date.parse(selectedDate);
$( "#pickupdate" ).datepicker("option",
{ defaultDate: ((deliverydate - Date.today())/1000/60/60/24 + 1 ) });
// day after deliverydate
$( "#pickupdate" ).datepicker("option",
{ minDate: ((deliverydate - Date.today())/1000/60/60/24 ) });
// same day as deliverydate
$( "#pickupdate" ).datepicker("option",
{ maxDate: ((deliverydate - Date.today())/1000/60/60/24 + <%= ENV["Max_days_of_rental"].to_i %> )});
// upper limit on rental days
}
});
$( "#pickupdate" ).datepicker({
// this is triggered on DOM load and is overwritten the minute a deliverydate is selected per the onClose
defaultDate: 1, // 1 day from today
numberOfMonths: 1,
minDate: 0,
maxDate: <%= ENV["Max_days_of_rental"].to_i %>,
dateFormat: "M d, yy"
});