Ir para conteúdo

POWERED BY:

Arquivado

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

Attila

Funcão para validar data!

Recommended Posts

Olá novamente, pessoal.

 

Alguém sabe o que diabos há de errado com essa função para validar a data? Por algum maldito motivo não entra de jeito nenhum no segundo if:

 

function validaData(){	//validar data	d = document.entrada;	erro = 0;	hoje = new Date();	anoAtual = hoje.getFullYear();	barras = d.data.value.split("/");	if (barras.length == 3)	{		dia = barras[0];		mes = barras[1];		ano = barras[2];		resultado = (!isNAN(dia) && (dia > 0) && (dia < 32)) &&		(!isNAN(mes) && (mes > 0) && (mes < 13)) && (!isNAN(ano)		&& (ano.length == 4) && (ano <= anoAtual && ano >= 1900));		if (!resultado)		{			alert("Data invalida");			d.data.focus();			return false;		}	}	else	{		alert("Data invalida");		d.data.focus();		return false;	}}

Deve ser uma coisa bem óbvia (como sempre), mas não estou encontrando...agradeço desde já! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

d = document.entradaoq eh document.entrada?? provavelmente nao foi definidose for um campo com ID, use document.getElementById('entrada')outra coisa, a conversao para numeros nao é feita automaticamente pelo javascript, entao seu isNaN sempre vai retornar truepara converter strings em numeros faca: dia = parseInt(barras[0]); mes = parseInt(barras[1]); ano = parseInt(barras[2]);flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta Wilker.

 

Bom, agora está assim (meu form logo abaixo):

 

function validaData(){	//validar data	d = document.entrada;	erro = 0;	hoje = new Date();	anoAtual = hoje.getFullYear();	barras = d.data.value.split("/");	if (barras.length == 3)	{		/*dia = barras[0];		mes = barras[1];		ano = barras[2];*/		dia = parseInt(barras[0]);		mes = parseInt(barras[1]);		ano = parseInt(barras[2]);		resultado = (!isNAN(dia) && (dia > 0) && (dia < 32)) &&		(!isNAN(mes) && (mes > 0) && (mes < 13)) && (!isNAN(ano)		&& (ano.length == 4) && (ano <= anoAtual && ano >= 1900));		if (!resultado)		{			alert("Data invalida");			d.data.focus();			return false;		}	}	else	{		alert("Data invalida");		d.data.focus();		return false;	}}<form name="entrada" class="textocinza11" action="gera_senha.php" method="POST" onsubmit="return validaData()">Digite a data:<input type="text" class="forms" maxlength="10" name="data" id="data" onkeyup="return formt_data()" />

Dessa maneira, quando digito por exemplo "72/08/2006" ele dá um erro "Objeto esperado", na linha 32 (logo aonde é usada pela primeira vez a variável resultado), ou seja, não continua entrando no segundo if, como deveria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esqueci de dizer, kra, a funcao eh isNaN, você ta usando isNAN, esse 'a' tem ser minusculo, javascript eh uma linguagem case-sensitive, ou seja, a funcao isNAN nao existe, a funcao isNaN existe :P

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.