JavaScript - llamar funcion desde un input type text

   
Vista:

llamar funcion desde un input type text

Publicado por cartings (77 intervenciones) el 18/11/2014 19:20:30
Obtuve esta funcion a través de este foro:

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
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;

y tengo este formulario en el cual debo llamar la funcion en el input type text que esta en negrita pero no funciona.

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
<form action="carga.php" method="POST" name="form1">
 
<?php
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=movilnet");
?>
   <table bgcolor="#CCFF99" align="center">
      <tr>
	    <td >Nro de Historia:</td>
<?php
$hoy=date('d-m-Y');
$query= pg_query("SELECT max(nrohistoria)+1 as MaxNroHistoria FROM paciente");
 if ($row = pg_fetch_row($query))
 {
  $id = str_pad(trim($row[0]),4,"0",STR_PAD_LEFT);
 }
?>
<td class='sr'><input type='text' readonly="T" value="<?php echo $id; ?>" name='nrohistoria' size='10' maxlength='10' align='right'/></td></tr>
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Nombres:</td>
		<td class="sr"><input type="text" name="nombres" size="50" maxlength="50" align="right"/></td>
	  </tr>
 
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Apellidos:</td>
		<td class="sr"><input type="text" name="apellidos" size="50" maxlength="50" align="right"/></td>
	  </tr>
 
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Direccion:</td>
		<td class="sr"><input type="text" name="direccion" size="120" maxlength="120" align="right"/>
		</td>
	  </tr>
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Telefono:</td>
		<td class="sr"><input type="text" name="telefono" size="10" maxlength="10" align="right"/>
		</td>
	  </tr>
 
<TR>
	<td>Fecha de Nac.:</td>
    <td><input type="text" size=10 maxlength=10 name="fecha_nac" onblur="calcular_edad();" id="fecha_nac"
	onKeyUp="mascara(this,'-',patron,true)">
   </td>
</TR>
si pudieran ayudarme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de xve

llamar funcion desde un input type text

Publicado por xve (1597 intervenciones) el 19/11/2014 20:49:14
Hola Zendi, al final de la función calcular_edad() tienes:
1
document.getElementById('edad').value = edad;
Este código lo que hace es poner en el elemento con el id="edad" el valor de la variable "edad" de JavaScript.

... pero.... donde esta el elemento con el id="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

llamar funcion desde un input type text

Publicado por zendi (77 intervenciones) el 20/11/2014 01:32:36
Que tal Xve.

disculpa la molestia e insistencia pero siempre me enredo con lo del id del javascript
lo coloque asi:

1
2
3
4
5
<TR>
	<td>Fecha de Nac.:</td>
    <td><input type="text" size=10 maxlength=10 name="fecha_nac" onBlur="calcular_edad();" id="edad" onKeyUp="mascara(this,'/',patron,true)">
   </td>
</TR>
ahora como traigo a impresion?
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 xve

llamar funcion desde un input type text

Publicado por xve (1597 intervenciones) el 20/11/2014 08:46:37
Hola Zendi, si le cambias el id al input, no podra coger el valor, ya que lo coje con:
1
var form = document.getElementById('fecha_nac').value;

No se muy bien como tienes pensado mostrar el resultado, pero lo que yo haría, sera crear otro <input> con el id edad, de esta manera, no reemplazaras la fecha entrada, no?
Algo así:
1
2
<input type="text" size=10 maxlength=10 name="fecha_nac" onblur="calcular_edad();" id="fecha_nac" onKeyUp="mascara(this,'-',patron,true)">
<input type="text" id="edad">

No se si es lo que tenias pensado...
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

llamar funcion desde un input type text

Publicado por zendi (77 intervenciones) el 20/11/2014 12:41:38
Hola Xve, exactamente esa es mi idea. Pero en el segundo input esta trayendo un dato incorrecto ya que le coloque la fecha 02//06/1960 y trae el año 2012, donde debiera traer el resultado 18 dias, 5 meses, 54 años.

como haria para hacerlo de esta manera? Si pudieras explicarme por favor. Te lo agradeceria.
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

llamar funcion desde un input type text

Publicado por zendi (77 intervenciones) el 20/11/2014 13:29:12
hola xve, te envio la imagen de como aparece el resultado:

calcular_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
Imágen de perfil de xve

llamar funcion desde un input type text

Publicado por xve (1597 intervenciones) el 20/11/2014 16:36:40
Hola Zendi, segun la función que estas utiizando, espera la fecha en formato americano y separado por guiones...

prueba a poner 1980-06-02

Si deseas poner la fecha en formato español y con barras de dividir, tienes que modificar el inicio de la función, reemplazando:
1
2
3
4
var fechaNacimiento = form.split("-");
var annoNac = fechaNacimiento[0];
var mesNac = fechaNacimiento[1];
var diaNac = fechaNacimiento[2];

por:
1
2
3
4
var fechaNacimiento = form.split("/");
var diaNac = fechaNacimiento[0];
var mesNac = fechaNacimiento[1];
var annoNac = fechaNacimiento[2];

Creo que simplemente con esto debería de funcionar...

Coméntanos, ok?
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

llamar funcion desde un input type text

Publicado por zendi (77 intervenciones) el 20/11/2014 17:56:55
Que tal amigo Xve, bueno asi si lo hace como indicaste la verdad no me percate, ahora quisiera que por favor me ayudaras con el calculo del mes y el dia,

bueno estoy haciendo la rutina para el mes pero tengo una falla:


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
function calcular_edad()
{
	var form = document.getElementById('fecha_nac').value; //fecha de nacimiento en el formulario
	var fechaNacimiento = form.split("/");
 
    var diaNac = fechaNacimiento[0];
    var mesNac = fechaNacimiento[1];
    var annoNac = 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--;
    		}
        }
////para calcular el mes
	var mes = mesActual - mesNac;
      if(mesActual>mesNac)
	  {
	   mes--;
      }
 
   if(mesActual<mesNac)
   {
    mes++;
 
    mes=(12-mesNac)+(mes);
   }
///fin calculo del mes
 
document.getElementById('edad').value = edad;
document.getElementById('mes').value = mes;
 
}
me da un error, cuando le coloco 02/06/1960 debiera arrojar 54 años y 5 meses el año esta bien como ya se aclaro pero el mes arroja 4 meses.

para el dia no he hecho una rutina, es bastante complicado.
Y disculpa Xve.
Aclaro que no me gusta ofender a nadie y para programar lo he aprendido por internet con videotutoriales y de verdad es demasiado lo que he avanzado y lo que he aprendido, por eso es que pido ayuda. Ademas de eso he aprendido con ustedes.
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

llamar funcion desde un input type text

Publicado por zendi (77 intervenciones) el 21/11/2014 02:00:07
Hola Xve, aqui yo mismo estoy tratando de crear el codigo para el calculo del mes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
////para calcular el mes
	var mes = mesActual - mesNac;
	alert(mes);
      if(mesActual>mesNac)
	  {
	   mes = mesActual - mesNac;
      }
 
   if(mesActual < mesNac)
   {
//    alert(mes);
    mes=(12-mesNac)+(mes);
   }
   mes;
document.getElementById('edad').value = edad;
document.getElementById('mes').value = mes;
acepto cualquier sugerencia si falta algo, hice la prueba con la fecha 02/12/1960 y calcula bien el año pero el mes lo calcula en -1.

Estoy tratando de entenderlo con logica.
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 xve

llamar funcion desde un input type text

Publicado por xve (1597 intervenciones) el 21/11/2014 10:42:45
Hola Zendi, aquí tienes un ejemplo donde te devuelve los años y los meses:

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
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
 
</head>
 
<body>
 
<script>
function calcular_edad(fecha)
{
//     var form = document.getElementById('fecha_nac').value; //fecha de nacimiento en el formulario
    var fechaNacimiento = fecha.split("/");
 
    var dia = fechaNacimiento[0];
    var mes = fechaNacimiento[1];
    var ano = fechaNacimiento[2];
 
    var fechaHoy = new Date(); // detecto la fecha actual y asigno el dia, mes y anno a variables distintas
    var ahora_ano = fechaHoy.getFullYear();
    var ahora_mes = fechaHoy.getMonth()+1;
    var ahora_dia = fechaHoy.getDate();
 
    // realizamos el calculo
    var edad = (ahora_ano + 1900) - ano;
    if ( ahora_mes < mes )
    {
        edad--;
    }
    if (mes == ahora_mes && ahora_dia < dia)
    {
        edad--;
    }
    if (edad > 1900)
    {
        edad -= 1900;
    }
 
    var meses=0;
    if(ahora_mes>mes)
        meses=ahora_mes-mes;
    if(ahora_mes<mes)
        meses=12-(mes-ahora_mes);
 
    document.write("<br>"+edad);
    document.write("<br>"+meses);
 
}
calcular_edad("22/10/2000");
 
</script>
 
</body>
</html>

Coméntanos si te sirve, ok?
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

llamar funcion desde un input type text

Publicado por zendi (77 intervenciones) el 22/11/2014 02:52:03
buenas noche Xve, que tal. Si funciono lo del año y el mes, estoy haciendo lo de los dias
este es el codigo, pero este si es mucho mas complicado.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (ahora_dia == dia)
{
  edaddia = 0;
 
  if(ahora_dia>dia)
   {
    dias=ahora_dia-dia;
   }else
   {
    if(ahora_dia<dia)
    {
     dias--;
    }
}

document.write("<br>"+dias);
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

llamar funcion desde un input type text

Publicado por zendi (77 intervenciones) el 23/11/2014 13:28:07
Alguien podria echarme una mano? incluso realicé este pseudocodigo:
para el calculo de los dias de edad

1
2
3
4
5
6
7
8
9
10
si diaNac = diaActual
    dia = 0;
   si diaNac > diaActual
        24/06/1960  > 23/11/2014
         entonces
 
       si diaNac < diaActual
                 23/06/1960  > 24/11/2014
            entonces
aqui es donde me lio.
y disculpen mi pregunta didáctica, la dea es realizarlo de manera logica y asi aprender mas la logica.
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

llamar funcion desde un input type text

Publicado por zendi (77 intervenciones) el 23/11/2014 22:15:34
que tal Xve, tienes alguna idea para el calculo de los dias amigo?
Saludos.
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 xve

Calcular la edad, meses y días hasta la fecha actual.

Publicado por xve (1597 intervenciones) el 28/11/2014 07:50:39
Hola Zendi, perdona por el retraso... aquí lo tienes, haber si te sirve...

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
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
 
</head>
 
<body>
 
<script>
function calcular_edad(fecha)
{
//     var form = document.getElementById('fecha_nac').value; //fecha de nacimiento en el formulario
    var fechaNacimiento = fecha.split("/");
 
    var dia = fechaNacimiento[0];
    var mes = fechaNacimiento[1];
    var ano = fechaNacimiento[2];
 
    var fechaHoy = new Date(); // detecto la fecha actual y asigno el dia, mes y anno a variables distintas
    var ahora_ano = fechaHoy.getFullYear();
    var ahora_mes = fechaHoy.getMonth()+1;
    var ahora_dia = fechaHoy.getDate();
 
    // realizamos el calculo
    var edad = (ahora_ano + 1900) - ano;
    if ( ahora_mes < mes )
    {
        edad--;
    }
    if (mes == ahora_mes && ahora_dia < dia)
    {
        edad--;
    }
    if (edad > 1900)
    {
        edad -= 1900;
    }
 
    // calculamos los meses
    var meses=0;
    if(ahora_mes>mes)
        meses=ahora_mes-mes;
    if(ahora_mes<mes)
        meses=12-(mes-ahora_mes);
    if(ahora_mes==mes && dia>ahora_dia)
        meses=11;
 
    // calculamos los dias
    var dias=0;
    if(ahora_dia>dia)
        dias=ahora_dia-dia;
    if(ahora_dia<dia)
    {
        ultimoDiaMes=new Date(ahora_ano, ahora_mes, 0);
        console.log(ultimoDiaMes.getDate());
        dias=ultimoDiaMes.getDate()-(dia-ahora_dia);
    }
 
    document.write("<br>Años: "+edad);
    document.write("<br>Meses: "+meses);
    document.write("<br>Dias: "+dias);
 
}
calcular_edad("22/10/2000");
 
</script>
 
</body>
</html>
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

Calcular la edad, meses y días hasta la fecha actual.

Publicado por zendi (77 intervenciones) el 29/11/2014 19:48:32
Hola Xve, disculpa que no haya respondido de si funciona o no, no he probado si funciona, en cuanto lo averigue te aviso. Disculpa.
Saludos.
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

Resuelto el Calcular la edad, meses y días hasta la fecha actual.

Publicado por zendi (77 intervenciones) el 30/11/2014 02:12:37
hola Xve, Por fin esta resuelto, gracias por el apoyo brindado.
Esperando que le sirva a otros programadores, analicenlo, y utilicenlo en sus aplicaciones cuando sea necesario, todavia se puede mejorar, sobretodo en la interface, separando la fecha de nacimiento.
este es el codigo:

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
function calcular_edad()
{
 var form = document.getElementById('fecha_nac').value; //fecha de nacimiento en el formulario
 var fechaNacimiento = form.split("/");
 var dia = fechaNacimiento[0];
 var mes = fechaNacimiento[1];
 var ano = fechaNacimiento[2];
 var fechaHoy = new Date(); // detecto la fecha actual y asigno el dia, mes y anno a variables distintas 
 var ahora_ano = fechaHoy.getFullYear();
 var ahora_mes = fechaHoy.getMonth()+1;
 var ahora_dia = fechaHoy.getDate(); // realizamos el calculo 
 var edad = (ahora_ano) - ano;
    if ( ahora_mes < mes )
      {
       edad--;
   	  }
	if (mes == ahora_mes && ahora_dia < dia){
	   edad--;
/////        
		dias = dia - ahora_dia;
		alert(dias);
	   }
	    if (dia > ahora_dia)
		{
		  dias = dia - ahora_dia
		}
		  if (ahora_dia == dia)
		{
		   dias = 0;
		}
		   if (dia < ahora_dia)
		   {
		     dias = ahora_dia - dia
		   }
/////		
	   if (edad > 1900)
	   {
	   edad -= 1900;
	   }
	   var meses=0;
	   if(ahora_mes>mes)
	     meses=ahora_mes-mes;
		 if(ahora_mes<mes)
		 meses=12-(mes-ahora_mes);
           // calculamos los dias 
 
				var dias=0;
				if(ahora_dia>dia) {
				    dias=ahora_dia-dia;
					}
					if(ahora_dia<dia)
					{
					ultimoDiaMes=new Date(ahora_ano, ahora_mes, 0);
					console.log(ultimoDiaMes.getDate());
					dias=ultimoDiaMes.getDate()-(dia-ahora_dia);
					}
    document.getElementById('edad').value = edad;
    document.getElementById('meses').value = meses;
    document.getElementById('dias').value = dias;
  }

y se aplica en este codigo HTML:

1
2
3
4
5
6
7
8
9
<TR>
	<td>Fecha de Nac.:</td>
    <td><input type="text" size=10 maxlength=10 name="fecha_nac" onBlur="calcular_edad();" id="fecha_nac" onKeyUp="mascara(this,'/',patron,true)">
<input type="text" size="2" maxlength="2" id="edad" name="anios">
<input type="text" size="2" maxlength="2" id="meses" name="meses">
<input type="text" size="2" maxlength="2" id="dias" name="dias">
 
   </td>
</TR>
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