PDA

View Full Version : Calendar - day of month dropdown auto adjusted


Mutt
01-18-2002, 06:40 PM
here's a quick javascript to add to the calendar_enterevent template so that the day of the month dropdown is adjusted when you change the month or year so that days like Feb 31 aren't available choices. it even recognizes leap years.


goto it from http://javascript.internet.com and adjusted it to work with vb

open the template

add this right before the </head> tag
<SCRIPT LANGUAGE="JavaScript">
//function for returning how many days there are in a month including leap years
function DaysInMonth(WhichMonth, WhichYear) {
var DaysInMonth = 31;
if (WhichMonth == "4" || WhichMonth == "6" || WhichMonth == "9" || WhichMonth == "11") DaysInMonth = 30;
if (WhichMonth == "2" && (WhichYear/4) != Math.floor(WhichYear/4)) DaysInMonth = 28;
if (WhichMonth == "2" && (WhichYear/4) == Math.floor(WhichYear/4)) DaysInMonth = 29;
return DaysInMonth;
}

//function to change the available days in a months
function ChangeOptionDays() {
Month = document.vbform.month[document.vbform.month.selectedIndex].value;
Year = document.vbform.year[document.vbform.year.selectedIndex].value;

DaysForThisSelection = DaysInMonth(Month, Year);
CurrentDaysInSelection = document.vbform.day.length;
if (CurrentDaysInSelection > DaysForThisSelection) {
for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++) {
document.vbform.day.options[document.vbform.day.options.length - 1] = null
}
}
if (DaysForThisSelection > CurrentDaysInSelection) {
for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++) {
NewOption = new Option(document.vbform.day.options.length + 1);
document.vbform.day.add(NewOption);
}
}
if (document.vbform.day.selectedIndex < 0) document.vbform.day.selectedIndex == 0;
}
</script>

add
onchange="javascript:ChangeOptionDays()"
to the month select field and the year select field

done

Mutt
01-18-2002, 06:44 PM
make sure you remove the space in javascript

Shenlong
01-18-2002, 06:48 PM
can u be more specific on where to add the 2nd javascript code plz?

Mutt
01-19-2002, 02:24 AM
find these 2 tags

<select name="month" tabindex="1">

and

<select name="year" tabindex="3">

change them so they look like this

<select name="month" tabindex="1" onchange="javascript:ChangeOptionDays()">

and

<select name="year" tabindex="3" onchange="javascript:ChangeOptionDays()">

hope that is clearer

Link14716
01-20-2003, 11:00 PM
This hack will be incorrect in February 2100 :D

Nice template mod, even though I don't use the calandar much.