Como sempre consigo tirar minhas dúvidas aqui no WM, resolvi colaborar com um script de validação de data.
Havia achado um script básico e resolvi melhora-lo. Ele está 100% comentado e ao meu ver 100% funcional.
Caso encontrem algum erro favor postar.
Este script detalha a validação emitindo mensagens de alerta para os seguintes casos. (começando aberto e fechando as condições)
- Verifica se o dia digitado é menor de 31 maior que zero;
- Verifica se o mês digitado é menor ou igual a 12 e maior que zero;
- Verifica se o ano digitado é menor que o ano atual;
- Verifica se o mês digitado é maior que o mesmo atual;
- Verifica se o dia digitado é menor que o dia atual;
- Valida os meses que possuem apenas 30 dias;
- Verifica se o mês digitado é fevereiro e se o ano nao é bissesto (mês com 28 dias);
- Verifica se o mês digitado é fevereiro e se o ano é bissesto (mês com 29 dias);
Emite mensagem de alerta em todas as situações.
/*Corrigido em 23/10/2008*/
segue abaixo:
<script>//By Nivaldo Silveira.
//Função validar data .
function ValidaData()
{ //Inicio do If da função ValidaData().
//Recebe a data digitada no form.
dtd = document.form1.dtnasc.value;
//Verifica se o campo está vazio, se não estiver vazio faz a verificação da data.
if (dtd!='')
{ //Inicio do if que verifica se a data está digitada.
//Pega a data do computador local e armazena na variavel dts.
var dts = new Date();
//Pega o dia do sistema e armazena separado na variavel sdia.
var sdia = dts.getDate();
//Pega o mês e armazena na variavel smes. Em JavaScript o mês começa do 0 (zero), para termos o numero correto do mês atual para cálculo devemos somar o mes +1.
var smes = dts.getMonth()+1;
//Pega o ano atual (4 digitos) e armazena na variavel sano.
var sano = dts.getFullYear();
//Armazena na variavel dia o dia digitado no formulário, buscando da variavel data criada anteriormente.
var dia = dtd.substring(0,2);
//Armazena na variável mes o mês digitado no formulário, buscando da variavel data criada anteriormente.
var mes = dtd.substring(3,5);
//Armazena na variável ano o ano digitado no formulário, buscando da variavel data criada anteriormente.
var ano = dtd.substring(6,10);
//Verifica se o dia digitado é menor de 31 maior que zero.
if (dia<=31 && dia>0)
{//Inicio do if de verificação da quantidade maxima de dias.
//Verifica se o mês digitado é menor ou igual a 12 e maior que zero.
if (mes<=12 && mes>0)
{//Inicio do if que verifica a validade do mês.
//Verifica se o ano digitado é menor que o ano atual.
if (ano<=sano)
{//Inicio - Verifica se o ano digitado é menor que o ano atual
//Verifica se o mês digitado é maior que o mesmo atual.
if (ano==sano && mes>smes)
{//Inicio - Verifica se o mês digitado é maior que o mesmo atual.
alert("Data incorreta!! O mês digitado é maior que o mês atual");//Emite um alerta informando o erro.
//Posiciona o cursor do mouse no campo data para ser digitado novamente.
document.form1.dtnasc.focus();//Emite um alerta informando o erro.
//Cancela a execução da função.
return false;
}//Fim do if Verifica se o mês digitado é maior que o mesmo atual.
//Verifica se o dia é menor que o dia atual.
if(ano==sano && mes==smes && dia>sdia)
{//Inicio do if Verifica se o dia é menor que o dia atual.
alert("Data incorreta!! O dia digitado é maior que o dia atual");//Emite um alerta informando o erro.
//Posiciona o cursor do mouse no campo data para ser digitado novamente.
document.form1.dtnasc.focus();//Emite um alerta informando o erro.
//Cancela a execução da função.
return false;
}//Fim do if Verifica se o dia é menor que o dia atual.
//Valida os meses que possuem apenas 30 dias.
if((mes==04 && dia > 30) || (mes==06 && dia > 30) || (mes==09 && dia > 30) || (mes==11 && dia > 30))
{//Inicio do If da verificação do mês de 30 dias.
alert("Dia incorreto !!! O mês digitado contém no máximo 30 dias."); //Emite um alerta informando o erro.
//Posiciona o cursor do mouse no campo data para ser digitado novamente.
document.form1.dtnasc.focus();
//Cancela a execução da função.
return false;
}//Fim do If da verificação do mês de 30 dias.
//Verifica se o mês digitado é fevereiro e se o ano nao é bissesto (mês com 28 dias).
if(ano%4!=0 && mes==2 && dia>28)
{//Inicio do If da verificação do mês de fevereiro (28 dias).
alert("Data incorreta!! O mês digitado contém no máximo 28 dias."); //Emite um alerta informando o erro.
//Posiciona o cursor do mouse no campo data para ser digitado novamente.
document.form1.dtnasc.focus();
//Cancela a execução da função.
return false;
}//Fim do If da verificação do mês de de fevereiro (28 dias).
//Verifica se o mês digitado é fevereiro e se o ano é bissesto (mês com 29 dias).
if(ano%4==0 && mes==2 && dia>29)
{//Inicio do If da verificação do mês de fevereiro (29 dias).
alert("Data incorreta!! O mês digitado contém no máximo 29 dias.");//Emite um alerta informando o erro.
//Posiciona o cursor do mouse no campo data para ser digitado novamente.
document.form1.dtnasc.focus();
//Cancela a execução da função.
return false;
}//Fim do If da verificação do mês de de fevereiro (29 dias).
}//Fim - Verifica se o ano digitado é menor que o ano atual.
else//Negação da condição da verificação se o ano é menor que ano atual.
{//Inicio do if da da mensagem verificação do ano.
alert("Data incorreta!! O ano digitado é maior que o ano atual");//Emite um alerta informando o erro.
//Posiciona o cursor do mouse no campo data para ser digitado novamente.
document.form1.dtnasc.focus();//Emite um alerta informando o erro.
//Cancela a execução da função.
return false;
}//Fim do if da mensagem verificação do ano.
}//Fim do if que verifica a validade do mês.
else//Negação da condição da verificação da digitação do mês.
{//Inicio do if da da mensagem verificação do mês.
alert("Data incorreta!! O mês deve ser maior que zero e menor que 13.");//Emite um alerta informando o erro.
//Posiciona o cursor do mouse no campo data para ser digitado novamente.
document.form1.dtnasc.focus();//Emite um alerta informando o erro.
//Cancela a execução da função.
return false;
}//Fim do if da da mensagem verificação do mês.
}//Fim do if de verificação da quantidade maxima de dias
else//Negação da condição da verificação da digitação do dia.
{//Inicio do if da da mensagem verificação do dia.
alert("Data incorreta!! O dia deve ser maior que zero e menor que 31.");//Emite um alerta informando o erro.
//Posiciona o cursor do mouse no campo data para ser digitado novamente.
document.form1.dtnasc.focus();//Emite um alerta informando o erro.
//Cancela a execução da função.
return false;
}//Fim do if da da mensagem verificação do dia.
}//Fim do if que verifica se a data foi digitada.
}//Fim da função ValidaData().
</script>
- LarPhozyHah likes this



Postagens
Não informado
