Ir para conteúdo
Fórum Script Brasil
  • 0

Validar Datas


MauF

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 0

function FormataDATA(nome){
	erroValue = "";
	DATA = getValue(nome);
	DATA = Limp(DATA);
	if(DATA.length == 8){
  if(parseInt(DATA.substring(0,2)) > 31){
  	erroValue = ('Você digitou o dia incorretamente, a data foi apagada. Digite novamente');
  	DATA = "";
  } else {
  	dia = DATA.substring(0,2);
  	if(parseInt(DATA.substring(2,4)) > 12){
    erroValue = ('Você digitou o mês incorretamente, a data foi apagada. Digite novamente');
    DATA = "";
  	} else {
    mes = DATA.substring(2,4);
    ano = DATA.substring(4,8);
    if(ano > 2050 || ano < 1900){
      erroValue = ("Você digitou o ano incorretamente, a data foi apagada. Digite novamente");
      DATA = "";
    } else {
      tmpMes = mes -1;
      tmp = new Date(ano, tmpMes, dia);
      m = tmp.getMonth();
      if(tmpMes != m){ erroValue = ('Data Inválida. A Data foi apagada, digite novamente'); DATA = "";}
      else
      DATA = dia + ('/') + mes + ('/') + ano;
    }
  	}
  }
	} else {
  if(DATA.length > 0){
  	erroValue = ('Verifique a data digitada, pois está incorreta. A data deve ser digitada com seus 8 dígitos (dd mm aaaa). Ex.: 01/01/2004 (As barras não são necessárias.)');
  	DATA = "";
  }
	}
	setValue(nome, DATA);
}
function getValue(nome){
	var obj = eval("document.forms[0]."+nome+".value");
	return obj;
}
function setValue(nome, valor){
	obj = eval("document.forms[0]."+nome);
	obj.value = valor;
}

é só você passar o nome do campo a ser verificado a data...

faz tempo q fiz essa função nem me lembro se tah funcinando, dá uma olhada, qualquer coisa me fala se não era bem isso q você queria....

abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa, a função não estava totalmente correta.

Faltou te passar essa função:

function Limp(c){
	qtd = c.length;
	var v = '';
	for (i=0; i < qtd; i++)
  for(t=0; t < 10; t++){
  	if(c.substring(i,i+1) == t && c.substring(i,i+1) != " ") v += c.substring(i,i+1);}
	return(v);
}

Põem junto com as outras, tu pode tirar aquela variavel "erroValue" que era da minha aplicação.

para utilizar é só você passar o nome do campo para a função FormataDATA(nome_do_campo_a Ser_Formatado):

<input type="text" name="campo" onChange="FormataDATA(this.name)">

Ele formata, verifica e depois joga o valor resultante no teu campo e tá pronto....

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Ba velh0o ma desculpa ta te aloprando mas não estou conseguindo acompanhar seu raciocinio....

Vê se fica mair ou menos assim..

<script Language = "JavaScript">
function FormataDATA(data_cadastro){
erroValue = "";
DATA = getValue(nome);
DATA = Limp(DATA);
function Limp(c){
qtd = c.length;
var v = '';
for (i=0; i < qtd; i++)
 for(t=0; t < 10; t++){
  if(c.substring(i,i+1) == t && c.substring(i,i+1) != " ") v += c.substring(i,i+1);}
return(v);
}
if(DATA.length == 8){
 if(parseInt(DATA.substring(0,2)) > 31){
  erroValue = ('Você digitou o dia incorretamente, a data foi apagada. Digite novamente');
  DATA = "";
 } else {
  dia = DATA.substring(0,2);
  if(parseInt(DATA.substring(2,4)) > 12){
   erroValue = ('Você digitou o mês incorretamente, a data foi apagada. Digite novamente');
   DATA = "";
  } else {
   mes = DATA.substring(2,4);
   ano = DATA.substring(4,8);
   if(ano > 2100 || ano < 1900){
     erroValue = ("Você digitou o ano incorretamente, a data foi apagada. Digite novamente");
     DATA = "";
   } else {
     tmpMes = mes -1;
     tmp = new Date(ano, tmpMes, dia);
     m = tmp.getMonth();
     if(tmpMes != m){ erroValue = ('Data Inválida. A Data foi apagada, digite novamente'); DATA = "";}
     else
     DATA = dia + ('/') + mes + ('/') + ano;
   }
  }
 }
} else {
 if(DATA.length > 0){
  erroValue = ('Verifique a data digitada, pois está incorreta. A data deve ser digitada com seus 8 dígitos (dd mm aaaa). Ex.: 01/01/2004 (As barras não são necessárias.)');
  DATA = "";
 }
}
setValue(nome, DATA);
}
function getValue(nome){
var obj = eval("document.forms[0]."+nome+".value");
return obj;
}
function setValue(nome, valor){
obj = eval("document.forms[0]."+nome);
obj.value = valor;
}
</script>

O nome do meu campo para validadar data é data_cadastro....

tenho que botar esse campo por todos que tiver nome..

e no input tenho que fazer assim

<input type="text" name="data_cadastro" size="15" maxlength="10" onChange="FormataDATA(this.name)">

Link para o comentário
Compartilhar em outros sites

  • 0

Sem problemas, vou colocar a função certinha pra ti...

<script Language = "JavaScript">
function FormataDATA(nome){
DATA = getValue(nome);
DATA = Limp(DATA);
if(DATA.length == 8){
if(parseInt(DATA.substring(0,2)) > 31){
alert('Você digitou o dia incorretamente, a data foi apagada. Digite novamente');
 DATA = "";
} else {
 dia = DATA.substring(0,2);
 if(parseInt(DATA.substring(2,4)) > 12){
  alert('Você digitou o mês incorretamente, a data foi apagada. Digite novamente');
  DATA = "";
 } else {
  mes = DATA.substring(2,4);
  ano = DATA.substring(4,8);
  if(ano > 2100 || ano < 1900){
    alert("Você digitou o ano incorretamente, a data foi apagada. Digite novamente");
    DATA = "";
  } else {
    tmpMes = mes -1;
    tmp = new Date(ano, tmpMes, dia);
    m = tmp.getMonth();
    if(tmpMes != m){ alert('Data Inválida. A Data foi apagada, digite novamente'); DATA = "";}
    else
    DATA = dia + ('/') + mes + ('/') + ano;
  }
 }
}
} else {
if(DATA.length > 0){
 alert('Verifique a data digitada, pois está incorreta. A data deve ser digitada com seus 8 dígitos (dd mm aaaa). Ex.: 01/01/2004 (As barras não são necessárias.)');
 DATA = "";
}
}
setValue(nome, DATA);
}
function getValue(nome){
var obj = eval("document.forms[0]."+nome+".value");
return obj;
}
function setValue(nome, valor){
obj = eval("document.forms[0]."+nome);
obj.value = valor;
}
function Limp(c){
qtd = c.length;
var v = '';
for (i=0; i < qtd; i++)
for(t=0; t < 10; t++){
 if(c.substring(i,i+1) == t && c.substring(i,i+1) != " ") v += c.substring(i,i+1);}
return(v);
}
</script>

<input type="text" name="data_cadastro" size="15" maxlength="10" onChange="FormataDATA(this.name)">

acho que é isso...

não mexa em nada, agora tah tudo certo.... é só usar.....

abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal agradeço muito a ajuda, mas como não entendo nada de jva, não estou conseguindo adaptar para o meu código, se alguém puder me dar uma força ficarei muito grata. na parte de verificação de data, está para data de nacimento mas quero somente para data válida, e não para data de nascimento, pois as agendas poderão ser feitas para datas posteriores aí dará problemas nos cadastros.

Pessoal estou precisando disso urgente

Me ajudem por favor

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...