Retroceder   Foros del Web > Programación para sitios web > Javascript

Respuesta
 
Herramientas Desplegado
Antiguo 15-may-2008, 02:49   #1 (permalink)
Mattep ha deshabilitado el karma
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Pedir fecha de nacimiento y calcular si es mayor de edad o no

Buenas, soy completamente novato en javascript y me han planteado el problema de introducir la fecha de nacimiento usando prompt y calcular la diferencia de edad introducida a el dia actual (utilizando new date creo) para que luego aparezca un alert anunciando si es mayor de edad o no.
He buscado bastante por internet y siempre encuentro el mismo script, que utiliza el metodo split que no acabo de enternder del todo como funciona en el codigo.
Este es el script que siempre encuentro i no acabo de entender:
//calcular la edad de una persona
//recibe la fecha como un string en formato español
//devuelve un entero con la edad. Devuelve false en caso de que la fecha sea incorrecta o mayor que el dia actual
function calcular_edad(fecha){

//calculo la fecha de hoy
hoy=new Date()
//alert(hoy)

//calculo la fecha que recibo
//La descompongo en un array
var array_fecha = fecha.split("/")
//si el array no tiene tres partes, la fecha es incorrecta
if (array_fecha.length!=3)
return false

//compruebo que los ano, 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


//si el año de la fecha que recibo solo tiene 2 cifras hay que cambiarlo a 4
if (ano<=99)
ano +=1900

//resto los años de las dos fechas
edad=hoy.getYear()- ano - 1; //-1 porque no se si ha cumplido años ya este año

//si resto los meses y me da menor que 0 entonces no ha cumplido años. Si da mayor si ha cumplido
if (hoy.getMonth() + 1 - mes < 0) //+ 1 porque los meses empiezan en 0
return edad
if (hoy.getMonth() + 1 - mes > 0)
return edad+1

//entonces es que eran iguales. miro los dias
//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 (hoy.getUTCDate() - dia >= 0)
return edad + 1

return edad
}

No busco que alguien me de un script entero, solamente si alguien me puede explicar que objetos serian los adecuados y un poco como se usan porque trato de entenderlo pero no tengo nociones

PD: tampoco ninguno de mis amigos y conocidos me ha podido facilitar la informacion.
Mattep está desconectado   Responder Citando
Antiguo 15-may-2008, 05:19   #2 (permalink)
miguel0n ha deshabilitado el karma
 
Avatar de miguel0n
 
Fecha de Ingreso: abril-2008
Ubicación: Madrid
Mensajes: 48
Re: Pedir fecha de nacimiento y calcular si es mayor de edad o no

hola, pues el metodo split permite dividir en varios bloques una cadena de texto, formando un array, segun el valor quele pasemos, en este caso '/'. En el codigo esta puesto 'fecha.split("/")', es decir que para la fecha 15/05/2008 tendras tres campos quedandote así

array_fecha[0] --> 15
array_fecha[1] --> 05
array_fecha[2] --> 2008

por eso compara para ver si la fecha es correcta.
if (array_fecha.length!=3)
return false

Puedes probar el contenido de cada elemento del array con alert(array_fecha[2]);

Un saludo
miguel0n está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:17.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93