Publicidad:
Terra
La Coctelera

villamalea

30 Mayo 2011

CALCULO DE LA EDAD

Hemos implementado esta aplicación (cálculo de la edad), utilizando javascript puro y duro, de manera que se puedan apreciar las particularidades de este lenguaje, cuya virtud más interesante reside en el poco peso de las páginas que lo utilizan, así como la instantaneidad del resultado.Se puede decir que es el padre de Ajax.

Para la introducción de las fechas en los inputs correspondientes, en código HTML, hemos intentado facilitar la labor al máximo, con el fin primordial de evitar errores de formato de fecha por parte del usuario.

Por otra parte, como la aplicación no funciona si javascript está desactivado en el navegador que lo ejecuta, se alertará de tal circunstancia al usuario. para que pueda poner remedio a tal hecho.

PROBAR  CALCULO DE LA EDAD


Código completo de la aplicación:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="Shortcut Icon" href="http://ecuadorcaser.webcindario.com/especial/calav.ico" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta content="Diego Tórtola Descalzo" name="author" />
<title>input con formateo de fecha y calculo edad</title>

<script type="text/javascript">
//<![CDATA[
<!--
function formato_fecha(dator){
var longitud=dator.value.length;
if(!longitud) return;
var modifica=0;
var positor=dator.value.search('/');
var charcero=dator.value.charAt(0);
var chartres=dator.value.charAt(3);
var charcuatro=dator.value.charAt(4);
var charseis=dator.value.charAt(6);
var mayorcero=parseInt(charseis);
switch(longitud){
case 2: if(positor == 1) {dator.value='0'+charcero+'/'; break;}
if(nonumber(dator.value.charAt(1))) {dator.value=charcero; break}
dator.value+='/'; rango_fecha(dator); break;
case 5: if(charcuatro == '/') { dator.value=dator.value.substr(0,3)+'0'+chartres+'/'; break;}
if(nonumber(charcuatro)) { modifica=4; break;}
dator.value+='/'; rango_fecha(dator); break;
case 1: if(charcero > 3) {dator.value='0'+charcero+'/'; break;}
if(nonumber(charcero)) dator.value='';
break;
case 4: if(chartres > 1) dator.value=dator.value.substr(0,3)+'0'+chartres+'/';
if(nonumber(chartres)) modifica=3;
break;
case 7: if(!mayorcero || (nonumber(charseis))) modifica=6; break;
case 8: if(nonumber(dator.value.charAt(7))) modifica=7; break;
case 9: if(nonumber(dator.value.charAt(8))) modifica=8; break;
case 10: if(nonumber(dator.value.charAt(9))) modifica=9; break
rango_fecha(dator); break;
}
if(modifica) dator.value=dator.value.substr(0,modifica);
}

function nonumber(digito){
if(digito < '0' || digito > '9') return true;
return false;
}

function rango_fecha(dator){
var dt=dator.value.length;
var barra_a='/';
var barra_b='/';
if(!dt) return;
var st=dator.value.split('/');
if(dt > 2) if(st[0] > 31) st[0]=31;
if(dt > 5) {
if(st[1] > 12) st[1]=12;
if((st[1] == 4) || (st[1] == 6) || (st[1] == 9) || (st[1] == 11)){
if(st[0] > 30) st[0]=30;
}
}
if(dt > 9){
if(st[2] > 2500) st[2]='2011';
if(st[1] == 2){
if (!(st[2] % 4) && (st[2] % 100) || !(st[2] % 400)){
if(st[0] > 29) st[0]=29;
}
else {
if(st[0] > 28) st[0]=28;
}
}
}
if(dt < 7) st[2]='';
if(dt < 6) barra_a='';
if(dt < 4) st[1]='';
if(dt < 3) barra_b='';
dator.value=st[0]+barra_a+st[1]+barra_b+st[2];
return st[0];
}

function calculare(form){
form.anus.value=calcular_edad(form);
}

function calcular_edad(form){
var fecha=form.fecha_a.value;
var array_fecha = fecha.split('/');
if (array_fecha.length!=3) return (0);
var ano = parseInt(array_fecha[2]);
if (isNaN(ano)) return (0);
var mes = parseInt(array_fecha[1]);
if(!mes){
mes=parseInt(fecha[4]);
}
if (isNaN(mes)) return (0);
var dia = parseInt(array_fecha[0]);
if(!dia){
dia=parseInt(fecha[1]);
}
if (isNaN(dia)) return (0);
if (ano <= 99){

ano +=1900;form.fecha_a.value=form.fecha_a.value.substr(0,6)+ano;

formato_fecha(form.fecha_a);
}

var hoy=form.fecha_b.value;
var array_hoy = hoy.split('/');
if (array_hoy.length!=3) return (0);
var anhoy = parseInt(array_hoy[2]);
if (isNaN(anhoy)) return (0);
var meshoy = parseInt(array_hoy[1]);
if(!meshoy){
meshoy=parseInt(hoy[4]);
}
if (isNaN(meshoy)) return (0);
var dihoy = parseInt(array_hoy[0]);
if(!dihoy){
dihoy=parseInt(hoy[1]);
}
if (isNaN(dihoy)) return (0);
if (anhoy <= 99){
anhoy+=1900;

form.fecha_b.value=form.fecha_b.value.substr(0,6)+anhoy;

formato_fecha(form.fecha_b);
}

var edad = anhoy - ano - 1;
var mesus="0";
var dius="0";
form.aplaza.value='35/'+mes+'/'+ano;
var dias_mes=parseInt(rango_fecha(form.aplaza));

if (meshoy > mes){
edad++;
mesus = meshoy - mes - 1;
if (dihoy >= dia){
mesus++;
}
}
if(meshoy < mes){
mesus = 12 - (mes - meshoy);
if(dihoy < dia) mesus--;
}
if (meshoy == mes) {
if (dihoy >= dia) {
edad++;
}
else mesus=11;
}
if (dihoy >= dia) dius=dihoy-dia;
if (dihoy < dia){
dius = dias_mes - (dia - dihoy);
}

form.meses.value=mesus;
form.dias.value=dius;
form.frac_ano.value=parseFloat(edad+mesus/12+dius/12/dias_mes).toFixed(2);
return edad;
}
// -->
//]]>
</script>

</head>
<body>
<script type="text/javascript">
//<![CDATA[
<!--
document.writeln(" <p><span style=\"font-weight: bold; text-decoration: underline;\">INPUT CON FORMATO DE FECHA<\/span><\/p> ");
document.writeln(" <form enctype=\"multipart/form-data\" method=\"post\" action=\"\"> ");
document.writeln(" <p>Fecha nacimiento (dd/mm/aaaa): <input type=\"text\" onfocus=\"frac_ano.value=fecha_a.value=anus.value=meses.value=dias.value='';\" onkeyup=\"formato_fecha(fecha_a);\" onblur=\"rango_fecha(fecha_a);\" name=\"fecha_a\" size=\"10\" /><\/p> ");
document.writeln(" <p>Fecha posterior (dd/mm/aaaa): <input type=\"text\" onfocus=\"frac_ano.value=fecha_b.value=anus.value=meses.value=dias.value='';\" onkeyup=\"formato_fecha(fecha_b);\" onblur=\"rango_fecha(fecha_b);\" name=\"fecha_b\" size=\"10\" /><\/p> ");
document.writeln(" <p>Edad: <input type=\"button\" name=\"anus\" value=\"\" size=\"25\" /> años, <input type=\"button\" name=\"meses\" value=\"\" size=\"5\" /> ");
document.writeln(" meses, <input type=\"button\" name=\"dias\" value=\"\" size=\"5\" /> dias.<\/p><input type=\"hidden\" name=\"aplaza\" /> ");
document.writeln(" <p>Edad actual: <input type=\"button\" name=\"frac_ano\" value=\"\" size=\"5\" /><\/p> ");
document.writeln(" <p><input name=\"calcular\" onclick=\"calculare(this.form);\" type=\"button\" value=\"Calcular Edad\" /><\/p> ");
document.writeln(" <\/form> <div id=\"dos\"><\/div>");
// -->
//]]>
</script>
<noscript>Si sólo aparece este mensaje, Javascript esta desactivado en su navegador.<br />
En tal caso, active javascript para que aparezca el aplicativo de la edad en la parte superior.</noscript>
</body>
</html>


Probado en Firefox 9.0.1

Para probar este código por tu cuenta, cópialo desde aquí y pégalo, utilizando un simple editor de texto plano (para evitar modificaciones automáticas del código), en un fichero con extensión .html, y arrástralo o ábrelo en tu navegador. La utilización pública del mismo se rige bajo las normas de copyleft.

Admite fechas desde el año 100 al 2499, tal cual está configurado.

Para los años 1901 a 1999 basta con poner los 2 últimos dígitos del año para que éste se autocomplete.


Corregido el 29 Dic. 2011 de un error de no comprobación de formato de fecha cuando sólo se ponen 2 dígitos para el año.


Esta aplicación está fundamentada en tomar los datos de fecha de los inputs de un form, por lo que, en caso de que la fecha hubiera que tomarla de variables y traspasarla a variables, habría que modificar las funciones eliminando los 'form.' y los '.value' que contienen.

Tambien se pueden ocultar los inputs que no se utilicen declarándolos 'hidden' en lugar de 'text'


Por si se quiere descargar el fichero calculaedad.html, actualizado el 9 Febrero 2012, éste es el link de descarga:

http://www.mediafire.com/?p5324louu5zu0xu

Este fichero se puede ejecutar localmente en el navegador, arrastrándolo en su interior.

servido por villamalea 4 comentarios compártelo

4 comentarios · Escribe aquí tu comentario

Viajes

Viajes dijo

Me ha venido chevere este programa! Aunque hay lineas de codigo que me fallan y no se porque puede ser...

12 Junio 2011 | 07:59 PM

villamalea

villamalea dijo

Tal vez estén mal copiadas dichas líneas o puede ser que se hayan ofuscado al publicarlas.

No obstante, puedes acceder a la dirección

http://www.villamalea.eu/aponline/calculaedad.php

donde funciona correctamente la aplicación, y obtener el código por medio del navegador

Salu2

13 Junio 2011 | 10:53 AM

am-de-ubeda

am-de-ubeda dijo

MI GRAN AMIGO, Y AL PUBLO DE VILLAMALEA. EL PUEBLO QUE ME ES VILLA.
LE RECUERDO Y ESPERO HACERLO TODOS LOS DIAS DE MI VIDA.
SU GENTIL AYUDA Y AMISTAD ME ENORGULELCE. PIDO A DIOS POR USTED Y SU FAMILIA Y AL EQUIPO QUE COLBAORA CON USTED.
FAMILIA. CREALO.
MI BUEN AMIGO, ME AGRADARIA LE HICIESE UN TRABAJO SIMILAR A LOS DE RELATOS DE AMDEU LINDEN
A....VERSOS A LOS HIJOS DEL CANCER.
SE LO AGRADECERIA.
SIEMPRE ESPERO SUS PALABRAS, TRABAJO Y AYUDA. GRACIAS.
SALUDOS

2 Octubre 2011 | 08:36 AM

Benito

Benito dijo

Eso puede ser debido a no haber utilizado un editor de texto plano, para evitar que se modifique alguna línea, a la hora de pegar el código.

29 Diciembre 2011 | 07:03 PM

Escribe tu comentario


Sobre mí

Soy conocido por Bartolo Guijander, por mi antepasado Bartolo. Amante de la programación en cualquier medio de difusión.
Actualmente trabajo en el mantenimiento de la página web de Villamalea: http://www.villamalea.eu/ financiada enteramente por personas altruistas que, como todos los que colaboramos en este proyecto, no tienen ni tenemos ningún interés personal en adquirir beneficios sino experiencia y satisfacción, a pesar de nuestras muchas ocupaciones. Hemos realizado lo que a nosotros nos hubiera gustado que existiese cuando nos adentramos por primera vez en los dominios de Internet:-)


¿Te gusta esta página?


Traduce esta página con:
Translate to English:
Traduzir para o Português:
Übersetzen auf Deutsch:
Traduire en français:
Traduci in italiano:



Villamalea, aquí nuestra música en mp3


eXTReMe Tracker


Directorio de Blog



ecoestadistica.com *


Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?