Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael.Bueno

Gerando a Idade pela Data de Nascimento

Recommended Posts

Boa tarde, senhores...

 

Estou com um problema no meu código que, se eu digito os dias anteriores e o atual, ele devolve normal a idade, exemplo:

 

30/04/1989 = 21

 

30/08/1989 = 20

 

Porém, se eu digito:

 

31/03/1989 ele da um erro no Firebug

 

Idade is not defined

[break on this error] document.getElementById('txtIdade').value = Idade;

 

Mas, se digito

 

31/05/1989 ele devolve o valor certo, que é igual a 20.

 

Resumindo:

 

Se digito Datas anteriores a do mês atual, ele devolve o erro, se digito Datas posteriores a atual, ele retorna o valor normalmente.

 

===

 

Código:

 

<html>
<head>
<title>Gerador de Idade</title>
</head>
<script type="text/javascript">
function Calcula()
{
 data = new Date();
 dia = data.getDate(); if(dia < 10){dia = "0" + dia;}
 mes = data.getMonth() +1; if(mes < 10){mes = "0" + mes;}
 ano = data.getFullYear();
 
 AnoHoje = ano;
 AnodataNascimento = document.getElementById('txtAno').value;
 
  if(document.getElementById('txtMes').value <= mes)
 {
  if(document.getElementById('txtDia').value <= dia)
  {

 Idade = parseInt(AnoHoje) - parseInt(AnodataNascimento);
 
  }
 }
 
 else
 {
 Idade = parseInt(AnoHoje) - parseInt(AnodataNascimento) - "1";
 }
 
 //alert(Idade);
  document.getElementById('txtIdade').value = Idade;
}
</script>
<body>
<font face="Calibri">
<div align="center">
 Data Nascimento: <input type="text" ID="txtDia" size="1" maxlength="2"> <input type="text" ID="txtMes" size="1" maxlength="2"> <input type="text" ID="txtAno" size="2" maxlength="4" onblur="Calcula();">
 
       Idade: <input type="text" readonly id="txtIdade" size="1">
</div> 
</font>
</body>
</html>

===

 

Obrigado.

 

Atenciosamente,

 

Rafael Bueno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apresenta o erro pois não ele não entra no if, pela ordem em que está. Faz assim:

 

 

function Calcula(){
	var data = new Date();
	var dia = data.getDate(); if(dia < 10){dia = "0" + dia;}
	var mes = data.getMonth() +1; if(mes < 10){mes = "0" + mes;}
	var ano = data.getFullYear();

	var AnoHoje = ano;
 
	var AnodataNascimento = document.getElementById('txtAno').value;
 	
	var Idade;
	if(parseInt(document.getElementById('txtDia').value) <= dia){
		if(parseInt(document.getElementById('txtMes').value) <= mes){			
			Idade = parseInt(AnoHoje) - parseInt(AnodataNascimento);
 		}
	} else{
		Idade = parseInt(AnoHoje) - parseInt(AnodataNascimento) - "1";
	}
 
	//alert(Idade);
	document.getElementById('txtIdade').value = Idade;
}

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, Thiago..

 

Porém, tente entrar com 31/03/1990 (Dia posterior ao de hj). Ele retornará Idade: "19" e não "20" que seria o certo.

 

A mesma coisa com alguma outra data por exemplo "21/08/1989". A idade retornada é "21" e não "20".

 

Att,

 

Rafael.

 

Ainda não resolvido, rs...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.