Ver Mensaje Individual
  #7 (permalink)  
Antiguo 07/07/2011, 10:47
SideEfect
 
Fecha de Ingreso: mayo-2011
Mensajes: 38
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: fecha de nacimiento automatica con error ......

Cita:
Iniciado por ceSharp Ver Mensaje
hola sideEfect,
prueba con todo esto:
--------------------------
function anyoBis(anyo)
{
if ((anyo % 4 == 0) && (( anyo % 100 != 0) || (anyo % 400 ==0)))
return true;
else
return false;
}
function validarFecha(mes,dia,anyo)
{
var bis = anyoBis(anyo); //recogemos el valor de si es o no bisiesto por si es necesario usarlo
var ret = false; //por defecto es falso por si mes no está comprendido entre 1 y 12
var numMes = new Number(mes);
var numDia = new Number(dia);
//meses de 31 dias
if(numMes == 1 || numMes == 3 || numMes == 5 || numMes == 7 || numMes == 8 || numMes == 10 || numMes == 12)
{
if(numDia<1 || numDia>31)
ret = false;
else
ret = true;
}
//meses de 30 dias
if(numMes == 4 || numMes == 6 || numMes == 9 || numMes == 11)
{
if(numDia<1 || numDia>30)
ret = false;
else
ret = true;
}
//mes de febrero
if(numMes == 2)
{
if(numDia>0 && numDia<29)
{ret = true;}
else if(numDia == 29 && bis == true)
{ret = true;}
else if(numDia<1 || numDia>30)
{ret = false;}
else
{ret = false;}
}
return ret;
}
function calcularEdad(fNac)
{

var fHoy = new Date();
var fHoy = fHoy.getDate() + "/" + parseInt(fHoy.getMonth()+1) + "/" + fHoy.getFullYear();
var array_fecha = fNac.split("/")
var array_fHoy = fHoy.split("/")
if(!validarFecha(array_fecha[1],array_fecha[0],array_fecha[2]))
{
alert('La fecha de nacimiento no es correcta.');
return false;
}

edadHoy=new Date(fHoy)

//si el array no tiene tres partes, la fecha es incorrecta
if (array_fecha.length!=3)
{
alert('La fecha de nacimiento no tiene un formato correcto (dd/mm/aaaa)');
return false;
}

//compruebo que los año, mes, dia son correctos
var ano
ano = parseInt(array_fecha[2]);
if (isNaN(ano))
return false
var mes
mes = parseInt(array_fecha[1]);
if (isNaN(mes))
return false
var dia
dia = parseInt(array_fecha[0]);
if (isNaN(dia))
return false;

//resto los años de las dos fechas
edad=edadHoy.getYear()- ano - 1; //-1 porque no se si ha cumplido años ya este año
var mismoMes = true;
//si resto los meses y me da menor que 0 entonces no ha cumplido años. Si da mayor si ha cumplido
if (edadHoy.getMonth() + 1 - mes < 0) //+ 1 porque los meses empiezan en 0
{
edad += 0;
mismoMes=false;
}
if (edadHoy.getMonth() + 1 - mes > 0)
{
edad += 1
mismoMes=false;
}
//como el mes de nacimiento es el mismo en el que estamos compruebo los días
if(mismoMes)
{
//si resto los dias y me da menor que 0 entonces no ha cumplido años. Si da mayor o igual si ha cumplido
if ((edadHoy.getUTCDate()+1) - dia >= 0)
edad += 1
else
edad += 0
}
return edad;
}
-------------------
debes llamar a la función calcularEdad(fNac), y el formato de fNac que sea dd/mm/aaaa.

saludos.

gracias de antemano por tomarte el tiempo en responder y tratar de ayudarme ya intente pero veo q la funcion esta mas q todo direccionado a input text , y yo quisiera q fuera con select como el q tengo arriba mmmmm y preferiblemente sin recargar la pagina hasta ahora no me da ,y la verdad no se q tendre malo