Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/12/2005, 09:50
Avatar de medinauta
medinauta
 
Fecha de Ingreso: diciembre-2002
Ubicación: Guayaquil
Mensajes: 159
Antigüedad: 22 años, 2 meses
Puntos: 0
JS que no funciona en Firefox

Puse en una página un código que me ayudaron a hacerlo aquí, con unos menúes.

Se selecciona el Año, luego el mes, y luego el día.

El año empieza en 1978 hasta el año actual, si se elige el año 1978 el menú de los meses empieza desde Junio, sino desde Enero a Diciembre y dependiendo del mes que se eligió, el menú de los días presenta 30 o 31 días (o 28).

Sin embargo al cargarlo en Firefox no me funciona... qué debo cambiar para que funcione?

Y si hay como validar para que Si se lecciona Año 1978, mes Junio, el menú de los días aparezca desde el 19.

El código es:
Código:
var aMeses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")

   function padNmb(nStr, nLen, sChr){
    var sRes = String(nStr);
    for (var i = 0; i < nLen - String(nStr).length; i++)
     sRes = sChr + sRes;
    return sRes;
   }

   function makeDateFormat(nDay, nMonth, nYear){
    var sRes;
    sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0");
    return sRes;
   }
    
   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 nAno;
    var nMes;
    with (document.frm){
     nAno = parseInt(ano.options[ano.selectedIndex].value);
     switch (nCambiado){
      case 0:
       llenaMes(mes, nAno);
       break;
      case 1:
       nMes = parseInt(mes.options[mes.selectedIndex].value);
       llenaDia(dia, nAno, nMes)
       break;
      case 2:
       nMes = parseInt(mes.options[mes.selectedIndex].value);
       nDia = parseInt(dia.options[dia.selectedIndex].value);
       res.value = makeDateFormat(nDia, nMes + 1, nAno);
       cambiarImagen(res.value);
       break;
     }
    }
   }

   function llenaAno(oAno){
    var hoy = new Date();
    var ini = 1978;
    addOpt(oAno, 0, "", "");
    for (var i = ini; i <= hoy.getYear(); i++)
     addOpt(oAno, i - ini + 1, String(i), String(i));
   }

  function llenaMes(oMes, nAno){
    var hoy = new Date();
    var nFin = 11;
    while (oMes.length > 0) oMes.remove(0);
    if (nAno == hoy.getYear()) nFin = hoy.getMonth();
    addOpt(oMes, 0, "", "");
    for (var i = nAno==1978?5:0 ; i <= nFin; i++)
     addOpt(oMes, i + 1, aMeses[i], String(i));
   }

   function llenaDia(oDia, nAno, nMes){
    var hoy = new Date();
    var nFin = lastDayOfMonth(nMes + 1, nAno);
    while (oDia.length > 0) oDia.remove(0);
    if (nAno == 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));
   }

function cambiarImagen(fecha) {
    var img=document.getElementById("imagen");
    fecha=fecha.split("/");
    var oAno=fecha[2].substring(2); var oMes=fecha[1]; var oDia=fecha[0]; var oFold=fecha[2];
//    img.src=oAno+oMes+oDia+".jpg";
	img.src="http://images.ucomics.com/comics/ga/"+oFold+"/"+"ga"+oAno+oMes+oDia+".gif";

}
La página es: http://usuarios.lycos.es/rmc/garfield/garfield.htm