Ver Mensaje Individual
  #14 (permalink)  
Antiguo 19/08/2005, 08:24
emedos14
 
Fecha de Ingreso: julio-2005
Mensajes: 15
Antigüedad: 19 años, 5 meses
Puntos: 0
Este javascript lo guardé como llenarDias.js

function esBisiesto(ano)
{
return ((ano%4==0 && ano%100!=0)||(ano%400==0)?true:false)
}

function llenarDias(ano, mes, dia)
{
var valMes, valAno, indiceCbo, i, n, cboAno, cboMes, cboDia, carMes

cboDia=document.getElementById(dia)
cboMes=document.getElementById(mes)
cboAno=document.getElementById(ano)

//se eliminan todos los elementos del combo 'Día'
n=cboDia.options.length
for (i=n-1; i>=0; i--)
cboDia.options[i] = null

//se llena el combo 'Día' con valores del 1 al 28
for (i=1; i<=28; i++)
cboDia.options[i-1]=new Option (String(i),String(i))//String() para
convertir en cadena un número

//se obtiene el valor del mes
indiceCbo=cboMes.selectedIndex//índice de la opción seleccionada
valMes=parseInt(cboMes.options[indiceCbo].value) //parseInt() para
convertir en número una cadena

//se obtiene el valor del año
indiceCbo=cboAno.selectedIndex //índice de la opción seleccionada
valAno=parseInt(cboAno.options[indiceCbo].value)

i=29
if (valMes==2) //si el mes es febrero
{
if (esBisiesto(valAno)) //si el año es biciesto
//se agrega 1 días más al combo 'Día' para que llegue a 29
cboDia.options[i-1]=new Option (String(i),String(i))
}
else if ((valMes%2==0||valMes>=8)&&(valMes%2!=0||valMes<=7 )) //si el
mes es abril, junio, septiembre o noviembre
{
//se agregan 2 días más al combo 'Día' para que llegue a 30
for (i=29; i<=30; i++)
cboDia.options[i-1]=new Option (String(i),String(i))
}
else if ((valMes%2!=0&&valMes<8)||(valMes%2==0&&valMes>7)) //si el
mes es enero, marzo, mayo, julio, agosto, octubre o diciembre
{
//se agregan 3 días más al combo 'Día' para que llegue a 31
for (i=29; i<=31; i++)
cboDia.options[i-1]=new Option (String(i),String(i))
}
}

y en mi página php coloqué tres combos, uno para el año, uno para el mes y otro para el día... el combo del mes depende del combo del año:

</font><font color="#003366" size="2" face="Arial, Helvetica, sans-serif">A&ntilde;o:
<select name="cboAno" id="cboAno" onChange="llenarDias('cboAno','cboMes','cboDia')">
<?php
$ano=date(Y);
if (!isset($Fano))
$Fano=$ano;
for ($i=1900; $i<=$ano; $i++)
{
if ($i==$Fano)
echo '<option value="'.$i.'" selected>'.$i.'</option>';
else
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
Mes:
<select name="cboMes" id="cboMes" onChange="llenarDias('cboAno','cboMes','cboDia')">
<?php
$mes=date(n);
if (!isset($Fmes))
$Fmes=$mes;
?>
<option value="1" <?php echo (($Fmes=="1")?"selected":"") ?> >Enero</option>
<option value="2" <?php echo (($Fmes=="2")?"selected":"") ?> >Febrero</option>
<option value="3" <?php echo (($Fmes=="3")?"selected":"") ?> >Marzo</option>
<option value="4" <?php echo (($Fmes=="4")?"selected":"") ?> >Abril</option>
<option value="5" <?php echo (($Fmes=="5")?"selected":"") ?> >Mayo</option>
<option value="6" <?php echo (($Fmes=="6")?"selected":"") ?> >Junio</option>
<option value="7" <?php echo (($Fmes=="7")?"selected":"") ?> >Julio</option>
<option value="8" <?php echo (($Fmes=="8")?"selected":"") ?> >Agosto</option>
<option value="9" <?php echo (($Fmes=="9")?"selected":"") ?> >Septiembre</option>
<option value="10" <?php echo (($Fmes=="10")?"selected":"") ?> >Octubre</option>
<option value="11" <?php echo (($Fmes=="11")?"selected":"") ?> >Noviembre</option>
<option value="12" <?php echo (($Fmes=="12")?"selected":"") ?> >Diciembre</option>
</select>
D&iacute;a:
<select name="cboDia" id="cboDia" >
<?php
$dia=date(j); //día del mes actual
$dias=date(t); //número de días del mes actual
if (!isset($Fdia))
$Fdia=$dia;
for ($i=1; $i<=$dias; $i++)
{
if ($i==$Fdia)
echo '<option value="'.$i.'" selected>'.$i.'</option>';
else
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>