hola como estan...
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>
Gracias por su ayuda...