Ir para conteúdo

POWERED BY:

Arquivado

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

Lucas Fernando

Validação para data maior do que a atual

Recommended Posts

Ola pessoal boa tarde.

 

Estou com um pequeno problema em minhas validações.

 

Tenho umas consultas e formulários de um cadastro que eu estou desenvolvendo que não posso permitir que o usuário digite uma data maior do que a atual.

 

 

Eu desenvolvi o seguinte código :

<script language="JavaScript">
	// inicia a validação dos campos

data = new Date();
dia = data.getDate();
mes = data.getMonth();
ano = data.getFullYear();

meses = new Array(12);

meses[0] = "01";
meses[1] = "02";
meses[2] = "03";
meses[3] = "04";
meses[4] = "05";
meses[5] = "06";
meses[6] = "07";
meses[7] = "08";
meses[8] = "09";
meses[9] = "10";
meses[10] = "11";
meses[11] = "12";

//data em formato dd/mm/aaaa
datac = dia + "/" + meses[mes] + "/" + ano;


function validadados(form){

//validação para campo vazio
if(form.start_date.value == "")
{
    alert("Digite uma data de Início");
    return false;
    }
	
	
//se a data de inicio for maior do que a data atual ativa validação
//essa é a validação que está com problemas
	if (form.start_date.value > datac)
{
    alert("a data digitada é maior do que a atual:\n" + form.start_date.value + "\n" + datac);
    return false;
}

		
	//se passar em todas as validações	
   return true;
	}
	

//aceita apenas numeros
function mascara(o,f){
	v_obj=o
	v_fun=f
	setTimeout("execmascara()",1)
}

function execmascara(){
	v_obj.value=v_fun(v_obj.value)
}

//adiciona barras
function all_date(v){

	v=v.replace(/\D/g,"")
	v=v.replace(/(\d{2})(\d)/,"$1/$2")
	v=v.replace(/(\d{2})(\d)/,"$1/$2")
	return v
}


	

</script>



<form id="addconsult" name="addconsult" method="post" action="#" onsubmit= "return validadados(this)" ">
<table id="box-table-a">
	<tr>
		<td width="20%" >Data: </td>
		<td align="left">
			 <input type="text" name="start_date" size="10" maxlength="10" onKeyUp="mascara(this,all_date);"> 
			
		*</td>
	</tr>
	
	
	</tr>


	
	<tr>
		<td> </td>
		<td><input type="submit" name="submit" value="Adicionar" class="button"> <input type="button" name="cancel" value="Cancelar" class="button" onclick="window.location='#';"></td>
	</tr>
</table>
</form>

Como já deixei marcado a valição que está apresentando problemas é:

 

if (form.start_date.value > datac)

 

Não sei o que ocorre mais é como se ele validasse apenas o dia e não a data completa.

 

um exemplo se eu digitar dia 15/04/2014 ele não vai permitir.

 

 

fucei bastante na net mais não encontrei nada que possa me ajudar nisso.

 

Fico agradecido se alguém tiver solução

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu seguiria esse lógica:

if ( ( anoDigitado <= anoAtual )  && ( mesDigitado <= mesAtual ) && (diaDigitado <= diaAtual) )
{

}

Bem simples, porém funcional.

 

Super simples de você checar se cada var está com o valor correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu seguiria esse lógica:

if ( ( anoDigitado <= anoAtual )  && ( mesDigitado <= mesAtual ) && (diaDigitado <= diaAtual) )
{

}

Bem simples, porém funcional.

 

Super simples de você checar se cada var está com o valor correto.

 

Ola Alan, mais como eu poderia fazer isso se eu já armazeno o valor da variavel em um unico input text ?

 

oque poderia utilizar para separar os valores em 3 dia mes e ano ?

 

em todo o caso eu ainda ficaria mais feliz se houvesse uma forma de fazer o calculo da forma que está, pois tenho varias validações dessa para alterar.

Compartilhar este post


Link para o post
Compartilhar em outros sites


function validaData(str){

var data = new Date();

var dataAtual = data.getFullYear()+'/'+(data.getMonth()+1)+'/'+data.getDate();

var dataTest = str.split('/');

var teste = dataTest[2]+'/'+dataTest[1]+'/'+dataTest[0];

if( new Date( teste ) >= new Date( dataAtual ) ) return false;

return true;

}

 

/*

 

Use:

 

if( !validaData('01/06/2014') )

alert('A data informada não pode ser maior que a data atual');

else

alert('Data okay!');

 

*/

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.