Mostrar idade apos perder o focu!

7 respostas
RiQuInHo_

Galera to com dificuldade de resolver resolver esse problema não consigo fazer com que apos informar a data de nascimento quando perder o focus mostrar no campo idade.

vou postar o script

<script>
function validarData(campo){
var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
var msgErro = 'Formato inválido de data.';
if ((campo.value.match(expReg)) && (campo.value!='')){
var dia = campo.value.substring(0,2);
var mes = campo.value.substring(3,5);
var ano = campo.value.substring(6,10);

if(mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12){
// VALIDAR DIA 31
if(dia > 31) { 
alert("Dia incorreto !!! O mês especificado contém no exatamente 31 dias.");
document.getElementById('calcular').disabled=true;
return false;
} else {
document.getElementById('calcular').disabled=false;
}
// FIM DO VALIDAR DIA 31
}

if(mes==4 || mes==6 || mes==9 || mes==11){
// VALIDAR DIA 30
if(dia > 30) { 
alert("Dia incorreto !!! O mês especificado contém no máximo 30 dias.");
document.getElementById('calcular').disabled=true;
return false;
} else {
document.getElementById('calcular').disabled=false;
}
// FIM DO VALIDAR DIA 30
}

if(mes==2) {
// VALIDAR DIA 28 E ANO
if(dia > 28 && ano%4!=0) { 
alert("Dia incorreto !!! O mês especificado contém no máximo 28 dias.");
document.getElementById('calcular').disabled=true;
return false;
} else {
document.getElementById('calcular').disabled=false;
} // FIM DO VALIDAR DIA 28 E ANO

// VALIDAR DIA 29 E ANO
if(dia > 29 && ano%4==0) { 
alert("Dia incorreto !!! O mês especificado contém no máximo 29 dias.");
document.getElementById('calcular').disabled=true;
return false;
} else {
document.getElementById('calcular').disabled=false;
} // FIM DO VALIDAR DIA 29 E ANO
}

} else {
alert(msgErro);
document.getElementById('calcular').disabled=true;
campo.focus();
return false;
}

}

function calculateAge(dobString) {
var dob = new Date(dobString);
var currentDate = new Date();
var currentYear = currentDate.getFullYear();
var birthdayThisYear = new Date(currentYear, dob.getMonth(), dob.getDate());
var age = currentYear - dob.getFullYear();
if(birthdayThisYear > currentDate) {
age--;
}
return age;
}
function calcular(data) {
var data = document.form.datanascimento.value;
var partes = data.split("/");
var junta = partes[2]+"-"+partes[1]+"-"+partes[0];
document.form.idade.value = (calculateAge(junta));
}

Onde ira colocar mostrar os valores

<td><label>Data de Nascimento</label></td>
							<td><input class="tamanhoMedioTexto" type="text"
								name="dataNascimento" id="dataNascimento" ></td>

							<td><label>Idade</label></td>
							<td><input type="text" size="1"  disabled="disabled"></td>

valeu!!!

7 Respostas

R

<input class="tamanhoMedioTexto" type="text" name="dataNascimento" id="dataNascimento" ONBLUR="METODO QUE CALCULA A IDADE" >

Ponha tudo em minusculo por favor.

RiQuInHo_

ficaria dessa forma?

<td><label>Data de Nascimento</label></td> <td><input class="tamanhoMedioTexto" type="text" name="dataNascimento" id="dataNascimento" onblur="validarData(document.form.datanascimento)"></td>

R

voce passa dentro do metodo assim: this.value

Que ele vai pegar o valor do input

RiQuInHo_

ou seja dessa forma

R

isso

RiQuInHo_

ué coloquei uma data assim 99/99/9999 mas qq perdeu o focu nada aconteceu…to fazendo algo errado?

R

Nao!, deixa eu testar aqui, onblur serve justamente para fazer isso ao perder o focus.

Criado 3 de abril de 2013
Ultima resposta 3 de abr. de 2013
Respostas 7
Participantes 2