【发布时间】:2012-03-30 17:12:54
【问题描述】:
我正在使用带有beforeShowDay 过滤器的jquery datepicker,它只启用星期二。如果我接近月底并且没有更多的星期二,则选择器将打开到当前月份,没有可用的日期。
我如何识别选择器的这种情况?有没有办法询问所选月份的可用日期或类似的东西?
如果我确实认识到这种情况,我如何让选择器在下个月用户点击时打开?
有自动的方法吗?
【问题讨论】:
标签: jquery datepicker
我正在使用带有beforeShowDay 过滤器的jquery datepicker,它只启用星期二。如果我接近月底并且没有更多的星期二,则选择器将打开到当前月份,没有可用的日期。
我如何识别选择器的这种情况?有没有办法询问所选月份的可用日期或类似的东西?
如果我确实认识到这种情况,我如何让选择器在下个月用户点击时打开?
有自动的方法吗?
【问题讨论】:
标签: jquery datepicker
试试这个jsfiddle我做的。
$(document).ready( function() {
$('#datepicker').datepicker({
defaultDate: nextTuesday(),
beforeShowDay: enableTuesdays
});
});
function enableTuesdays(date) {
// 0 =s unday, 1 = monday, 2 = tuesday, 3 = wednesday,
// 4 = thursday, 5 = friday, 6 = saturday
var day = date.getDay();
return [(day == 2), ''];
}
function nextTuesday() {
var today = new Date();
var offset = (today.getDay() < 2) ? 0 : 7;
var daysUntilTuesday = 2 + offset - today.getDay();
return '+'+daysUntilTuesday;
}
【讨论】:
使用日期选择器 setDate() 方法 - http://jqueryui.com/demos/datepicker/#method-setDate - 将日历日期设置为 beforeShowDay 事件中的下一个可用星期二。
这里有一个获取一周中下一个特定日期的示例:Get date of specific day of the week in JavaScript
【讨论】:
虽然这并没有解决如果没有更多可用日期,则找出让日历在下个月打开的逻辑。如果前端设计允许,您可以让日期选择器以 2 个月的视图打开,这样您总是可以选择日期吗?
安装程序会要求您在初始化日期选择器时将“numberOfMonths”作为选项传入。
$('#datepicker').datepicker({ numberOfMonths: 2 });
【讨论】: