|    
			
				19/08/2005, 08:24
			
			
			  | 
  |   |  |  |  Fecha de Ingreso: julio-2005 
						Mensajes: 15
					 Antigüedad: 20 años, 3 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ñ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í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>
     |