JavaScript - Ayuda con input date html5 javascript, calcular edad

 
Vista:
sin imagen de perfil

Ayuda con input date html5 javascript, calcular edad

Publicado por Erasmo (5 intervenciones) el 20/05/2013 19:47:06
Tengo esta función:
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
<script language="JavaScript">
function calcular_edad(fecha){
var selectObject = document.forms['alumno'].elements['fechan'];
var fecha = selectObject.options[selectObject.selectedIndex].value;
   	hoy=new Date()
   	var array_fecha = fecha.split("/")
   	if (array_fecha.length!=3)
      	 return false
   	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
   	if (ano<=99)
      	 ano +=1900
   	edad=hoy.getYear()- ano - 1; //-1 porque no se si ha cumplido años ya este año 
   	if (hoy.getMonth() + 1 - mes < 0) //+ 1 porque los meses empiezan en 0 
      	 return edad
   	if (hoy.getMonth() + 1 - mes > 0)
      	 return edad+1
   	if (hoy.getUTCDate() - dia >= 0)
      	 return edad + 1
   	document.getElementsByName(edad).value = edad
}
</script>

El siguiente formulario con los input:
1
2
3
4
<form method="post" id="alumno">
<input name="fechan" type="date" id="fechan" tabindex="6" onblur="calcular_edad(this.value)"/>
<input name="edad" type="text" readonly="readonly" style="text-align:center" required="required" id="edad" tabindex="7" size="3" />
</form>



La cuestion es que el campo edad no recoge el valor que genera la funcion, ya estoy enredado con javascript DOM
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda con input date html5 javascript, calcular edad

Publicado por Erasmo (5 intervenciones) el 21/05/2013 15:14:19
Saludos, muchas gracias por el aporte, la cuestión es que quiero realizarla con el data picker de html 5 "date", no con campos separados...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con input date html5 javascript, calcular edad

Publicado por Erasmo (5 intervenciones) el 21/05/2013 18:28:24
Al fin encontre la solución, no agarraba el select, lo logre de esta forma:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script type="text/javascript">
function calcular_edad(){
    var frm = document.Alumn0;
    var fechanac = frm.fechan.value;
   	var diaB=<?php echo date('d')?>;
	var mesB=<?php echo date('m')?>;
	var anoB=<?php echo date('Y')?>;
	var array_fecha = fechanac.split("-")
	var ano = parseInt(array_fecha[0]);
	var mes = parseInt(array_fecha[1]);
	var dia = parseInt(array_fecha[2]);
//	alert(ano);
	edad = anoB - ano;
//	alert(edad);
	edad = anoB - ano - 1; //-1 No se sabe si cumplio o no años este año 
   	if (mesB + 1 - mes < 0) //-1 
      	{ edad = edad - 1; }
   	if (mesB + 1 - mes > 0)//Igual 
      	{ edad = edad;     }
   	if (diaB - dia >= 0)//+1 
      	{ edad = edad + 1; }
	frm.edada.value = edad;
}
</script>

Todo esto debido a que el input tipo "date" html5 recoge los datos segun el navegador los quiera mostrar pero en efecto los recoge tipo YYYY-MM-DD, otras aclaratorias:
use un formulario de nombre "Alumn0"
use un input date de nombr "fechan"
use un input text de nombre "edada" que es donde se visualiza la edad dentro del form
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de CanoRioss

Ayuda con input date html5 javascript, calcular edad

Publicado por CanoRioss (2 intervenciones) el 04/05/2014 03:16:18
Acá les dejo lo que acabo de hacer, si a alguien le sirve, yo encantado de compartir, si alguien detecta un error o falla, por favor comenten para corregir...

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
/*----------Funcion para obtener la edad------------*/
function calcular_edad() {
	var form = document.getElementById('fecha_nac').value;	//fecha de nacimiento en el formulario
	var fechaNacimiento = form.split("-");
	var annoNac = fechaNacimiento[0];
	var mesNac = fechaNacimiento[1];
	var diaNac = fechaNacimiento[2];
 
	var fechaHoy = new Date(); // detecto la fecha actual y asigno el dia, mes y anno a variables distintas
	var annoActual = fechaHoy.getFullYear();
	var mesActual = fechaHoy.getMonth()+1;
	var diaActual = fechaHoy.getDate();
 
	var edad =  annoActual - annoNac;
	if(mesNac > mesActual){
		//alert('mes de nacimiento mayor');
		edad--;
		}
	if(mesNac == mesActual){
			//alert('mes igual');
			if(diaNac > diaActual){
				//alert('dia de nacimiento mayor');
				edad--;
				}
		}
document.getElementById('edad').value = edad;
};
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar