Tengo el siguiente script para colocar la fecha usando tres option select:
Código:
<SCRIPT LANGUAGE="JavaScript"> <!-- Begin //set todays date Now = new Date(); NowDay = Now.getDate(); NowMonth = Now.getMonth(); NowYear = Now.getYear(); if (NowYear < 2000) NowYear += 1900; //for Netscape //function for returning how many days there are in a month including leap years function DaysInMonth(WhichMonth, WhichYear) { var DaysInMonth = 31; if (WhichMonth == "Apr" || WhichMonth == "Jun" || WhichMonth == "Sep" || WhichMonth == "Nov") DaysInMonth = 30; if (WhichMonth == "Feb" && (WhichYear/4) != Math.floor(WhichYear/4)) DaysInMonth = 28; if (WhichMonth == "Feb" && (WhichYear/4) == Math.floor(WhichYear/4)) DaysInMonth = 29; return DaysInMonth; } //function to change the available days in a months function ChangeOptionDays(Which) { DaysObject = eval("document.Form1." + Which + "Day"); MonthObject = eval("document.Form1." + Which + "Month"); YearObject = eval("document.Form1." + Which + "Year"); Month = MonthObject[MonthObject.selectedIndex].text; Year = YearObject[YearObject.selectedIndex].text; DaysForThisSelection = DaysInMonth(Month, Year); CurrentDaysInSelection = DaysObject.length; if (CurrentDaysInSelection > DaysForThisSelection) { for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++) { DaysObject.options[DaysObject.options.length - 1] = null } } if (DaysForThisSelection > CurrentDaysInSelection) { for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++) { NewOption = new Option(DaysObject.options.length + 1); DaysObject.add(NewOption); } } if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0; } //function to set options to today function SetToToday(Which) { DaysObject = eval("document.Form1." + Which + "Day"); MonthObject = eval("document.Form1." + Which + "Month"); YearObject = eval("document.Form1." + Which + "Year"); YearObject[0].selected = true; MonthObject[NowMonth].selected = true; ChangeOptionDays(Which); DaysObject[NowDay-1].selected = true; } //function to write option years plus x function WriteYearOptions(YearsAhead) { line = ""; for (i=0; i<YearsAhead; i++) { line += "<OPTION>"; line += NowYear - i; } return line; } // End --> </SCRIPT>
Usando estos select:
Código PHP:
<FORM NAME="Form1">
<SELECT NAME="FirstSelectDay">
<option value="01">1 </option>
<option value="02">2 </option>
<option value="03">3 </option>
<option value="04">4 </option>
<option value="05">5 </option>
<option value="06">6 </option>
<option value="07">7 </option>
<option value="08">8 </option>
<option value="09">9 </option>
<option value="10">10 </option>
<option value="11">11 </option>
<option value="12">12 </option>
<option value="13">13 </option>
<option value="14">14 </option>
<option value="15">15 </option>
<option value="16">16 </option>
<option value="17">17 </option>
<option value="18">18 </option>
<option value="19">19 </option>
<option value="20">20 </option>
<option value="21">21 </option>
<option value="22">22 </option>
<option value="23">23 </option>
<option value="24">24 </option>
<option value="25">25 </option>
<option value="26">26 </option>
<option value="27">27 </option>
<option value="28">28 </option>
<option value="29">29 </option>
<option value="30">30 </option>
<option value="31">31 </option>
</SELECT>
<SELECT NAME="FirstSelectMonth"
ONCHANGE="ChangeOptionDays('FirstSelect')">
<option value="01">Jan </option>
<option value="02">Feb </option>
<option value="03">Mar </option>
<option value="04">Apr </option>
<option value="05">May </option>
<option value="06">Jun </option>
<option value="07">Jul </option>
<option value="08">Aug </option>
<option value="09">Sep </option>
<option value="10">Oct </option>
<option value="11">Nov </option>
<option value="12">Dec </option>
</SELECT>
<SELECT NAME="FirstSelectYear"
ONCHANGE="ChangeOptionDays('FirstSelect')"> <SCRIPT LANGUAGE="JavaScript">
document.write(WriteYearOptions(50));
</SCRIPT>
</SELECT>
</FORM>
El problema en Mozilla es el siguiente, empieza bien pero si llego a seleccionar el mes de febrero coloca en el campo dia solo hasta el 28 pero al volver a querer colocar otro mes con mas dias, ya no vuelve a colocar los valores mayores a 28, cosa que si hace en el IE explorer.
Que será lo que esta mal, se podrá cambiar algo para que funcione en Mozilla???, probablemente una instruccion en el script...