我有一个jQuery日期选择器,我需要执行以下操作:
我知道我需要使用beforeShowDay函数,但似乎无法使用Stack Overflow上的其他答案和示例来实现它。
任何帮助都会很棒。
丹
答案 0 :(得分:0)
如果它是一个静态的星期日,你可以简单地使用一个数组,其中包含你要禁用的日期[取自Jquery UI datepicker. Disable array of Dates]:
var array = ["2013-03-14","2013-03-15","2013-03-16"]
$('input').datepicker({
beforeShowDay: function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [ array.indexOf(string) == -1 ]
}
});
如果你想制作一组动态星期日,你必须创建一个函数来从开始日期和结束日期获得一系列星期日。
这是一个完全正确的功能:
function addSundaysToArray(fromDate, toDate, datesToDisable){
fromDate = new Date(fromDate);
toDate = new Date(toDate);
while(fromDate < toDate){
fromDate.setDate(fromDate.getDate() + 1);
if(fromDate.getDay() === 0){
var year = fromDate.getFullYear();
var month = fromDate.getMonth() + 1;
month = (month + '').length == 1 ? '0' + month : month;
var day = fromDate.getDate();
day = (day + '').length == 1 ? '0' + day : day;
datesToDisable.push(year + "-" + month + "-" + day);
}
}
}
显然你可以在这里使用实际的日期对象,甚至毫秒。或者您可以跳过函数的数组输入,只返回一个包含日期的数组。
我选择将日期表示为yyyy-mm-dd,因为大多数时候人们会阅读这些数组,并且最好让它们具有可读性。当然,如果可读性对您来说并不重要,您可以按照您喜欢的任何格式保留日期。