I have 2 arrays for the dates. I don’t understand why the first element works, and the second doesn’t works. That is the same function. Second and third (4th 5th… etc ) should work. I don’t understand. Maybe it’s bug of datepicker, because I also cannot use the onChange function.
[2010,8,10] – [2010,8,15] -> works
[2010,7,10] – [2010,7,10] -> doesn’t works.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>jQuery UI Datepicker - Default functionality</title>
<link type="text/css" href="js/themes/base/ui.all.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/ui/ui.core.js"></script>
<script type="text/javascript" src="js/ui/ui.datepicker.js"></script>
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
td.odd, table.ui-datepicker-calendar tbody td.odd a { background: yellow; }
td.odd2, table.ui-datepicker-calendar tbody td.odd2 a { background: red; bgcolor: red; }
</style>
<script type="text/javascript">
var start_date = [
[2010,8,10], [2010,7,10]
];
var end_date = [
[2010,8,15], [2010,7,15]
];
function nationalDays(date) {
var year = 0;
var month = 1;
var day = 2
for (i = 0; i < start_date.length; i++) {
if (
( ( start_date[i][year] <= date.getFullYear() ) && ( date.getFullYear() <= end_date[i][year] ) ) &&
( ( start_date[i][month]-1 <= date.getMonth() ) && ( date.getMonth() <= end_date[i][month]-1 ) ) &&
( ( start_date[i][day] <= date.getDate() ) && ( date.getDate() <= end_date[i][day] ) )
) {
//( start_year <= now_year <= end_year ) && ( start_month <= now_month <= end_month ) && ( start_day <= now_day <= end_day )
return [true, 'odd2'];
} else {
return [false, 'odd2'];
}
}
}
$(function() {
$(".datepicker").datepicker({
beforeShowDay: nationalDays,
showOn: 'button', buttonImage: 'images/calendar_icon.jpg', buttonImageOnly: true,
numberOfMonths: 3,
dateFormat: 'dd/mm/yy',
showButtonPanel: false,
closeText: 'X' ,
currentText: 'Now',
constrainInput: true,
stepMonths: 3,
firstDay: 1,
monthNames: ['Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'],
nextText: 'Later',
prevText: 'Earlier',
minDate: '-0d',
maxDate: '+1y'
});
});
</script>
</head>
<body>
<table>
<tr>
<td><p>Date: <input type="text" name="date2" value="" size="20" readonly="readonly" class="datepicker"></p></td>
</tr>
</table>
</body>
</html>
I’m having a hard time parsing if block, but I don’t think it matters. I’m guessing it’s because you’re returning
falseonce it doesn’t match your first set of dates, so your loop will never get past the first iteration.I think you want to move the
return falseoutside of your loop…