Tengo un problemita... tengo una pagina que tiene un formulario, y uno
de los campos es fecha de alquiler.. alli.. hay una fecha desde y otra hasta, lo que quiero hacer es que se llenen esos combobox (de año, mes, y dia) tanto para "desde" como para "hasta".. esto lo estoy haciendo con javascript... pero tengo dos problemas.. uno... cuando elijo la fecha desde y voy a llenar los datos de la fecha hasta se cambia la opcion que eleji en mes y dia de la fecha desde... el otro problemita q tengo es que la fecha desde deberia ya estar seleccionada la fecha de hoy por defecto...
El codigo es:
Código HTML:
<html> <head> <script language="JavaScript"> var aMeses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"); var aux=0; function addOpt(oCntrl, iPos, sTxt, sVal){ var selOpcion = new Option(sTxt, sVal); oCntrl.options.add(selOpcion, iPos); } function lastDayOfMonth(nMonth, nYear){ var aMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); if ((nMonth == 2) && (nYear % 4 == 0)) return 29; else return aMonth[nMonth - 1]; } function cambia(nCambiado){ var nA_o; var nMes; var nA_o2; var nMes2; with (document.CMSFORM){ nA_o = parseInt(a_o.options[a_o.selectedIndex].value); switch (nCambiado){ case 0: llenaMes(mes, nA_o); llenaMes(mes2, nA_o2); break; case 1: nMes = parseInt(mes.options[mes.selectedIndex].value); nMes2 = parseInt(mes2.options[mes2.selectedIndex].value); llenaDia(dia, nA_o, nMes) llenaDia(dia2, nA_o2, nMes2) break; case 2: nMes = parseInt(mes.options[mes.selectedIndex].value); nDia = parseInt(dia.options[dia.selectedIndex].value); nMes2 = parseInt(mes2.options[mes2.selectedIndex].value); nDia2 = parseInt(dia2.options[dia2.selectedIndex].value); if(aux==0) { next_op(); aux=1; nA_o2 = parseInt(a_o2.options[a_o2.selectedIndex].value); } break; } } } function next_op(){ llenaA_o(document.CMSFORM.a_o2) } function llenaA_o(oA_o){ var hoy = new Date(); var ini = 2005; // addOpt(oA_o, 0, "", ""); for (var i = ini; i <= hoy.getYear()+1; i++) addOpt(oA_o, i - ini + 1, String(i), String(i)); } function llenaMes(oMes, nA_o){ var hoy = new Date(); var nFin = 11; while (oMes.length > 0) oMes.remove(0); if (nA_o == hoy.getYear()) nFin = hoy.getMonth(); // addOpt(oMes, 0, "", ""); for (var i = 0; i <= nFin; i++) addOpt(oMes, i + 1, aMeses[i], String(i)); } function llenaDia(oDia, nA_o, nMes){ var hoy = new Date(); var nFin = lastDayOfMonth(nMes + 1, nA_o); while (oDia.length > 0) oDia.remove(0); if (nA_o == hoy.getYear() && nMes == hoy.getMonth()) nFin = hoy.getDate(); // addOpt(oDia, 0, "", ""); for (var i = 1; i <= nFin; i++) addOpt(oDia, i + 1, String(i), String(i)); } </script> </head> <body onload="llenaA_o(document.CMSFORM.a_o)"> <form name=CMSFORM method=post> <table width=100% border=1 align=center> <!-- **** FECHA ***** --> <tr> <td align=right><b>Fecha de alquiler:</b></td> <td> <table border=1> <tr> <td align="center" width=100><b>Desde: </b></td> <td align="right"> Año: </td> <td width=100> <select name="a_o" onchange="cambia(0)" style="width: 80"> </select> </td> <td align="right"> Mes: </td> <td width=100> <select name="mes" onchange="cambia(1)" style="width: 80"> </select> </td> <td align="right"> Día: </td> <td width=100> <select name="dia" onchange="cambia(2)" style="width: 80"> </select> </td> </tr> </table> </td> </tr> <tr> <td></td> <td> <table border=1> <tr> <td align="center" width=100><b>Hasta: </b></td> <td align="right"> Año: </td> <td width=100> <select name="a_o2" onchange="cambia(0)" style="width: 80"> </select> </td> <td align="right"> Mes: </td> <td width=100> <select name="mes2" onchange="cambia(1)" style="width: 80"> </select> </td> <td align="right"> Día: </td> <td width=100> <select name="dia2" onchange="cambia(2)" style="width: 80"> </select> </td> </tr> </table> </td> </tr> <!-- **** FECHA ***** --> </table> </body> </html>