Jump to content


KiGiL

Member Since 18/03/2005
Offline Last Active 22/04/2010, 01:43
-----

#942989 Contribuição - Script Validar Data

Posted by KiGiL on 23/10/2008, 00:34

Boa noite pessoal.
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>



IPB Skin By Virteq