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

Checar Campo De Data No Formato (dd/mm/aaaa)


webdev

Pergunta

Eu gostaria de fazer com que um campo de data (no formato dd/mm/aaaa) somente pudesse receber:

* numeros e somente 2 algarismos em "dd", 2 em "mm", e 4 em "aaaa"

* checasse se estes campos estão vazios.

* checasse se estes campos contem espacos.

* fizesse com que à medida em que fossem digitados, por exemplo: 2 algarismos no campo "dd", o cursor mudasse o foco para o proximo campo e assim em diante..

Sabendo disto, procurei desenvolver meio que sem sucesso o código logo abaixo que aparentemente não está funcionando.

Quando eu clico em enviar, o form envia os dados mesmo estando vazio os campos de data, e tambem o código não está contando quantos algarismos contem cada campo e deixando assim que seja enviado o form com quantos numeros forem digitados.

O código é:

    /*********************************
  INÍCIO DA VALIDAÇÃO DO CAMPO DATA
  *********************************/
  // ESPACO
     var dd_espaco = document.frmcadastro.dd.value.indexOf(' ');
     var mm_espaco = document.frmcadastro.mm.value.indexOf(' ');
     var aaaa_espaco = document.frmcadastro.aaaa.value.indexOf(' ');
  // TAMANHO
     var dd_tamanho = document.frmcadastro.dd.value.length;
     var mm_tamanho = document.frmcadastro.mm.value.length;
     var aaaa_tamanho = document.frmcadastro.aaaa.value.length;
  
  // CHECANDO TAMANHO OU VAZIO
  if ((dd_tamanho > 2) || (dd_tamanho <= 0)) {
  alert('Campo DD não deve conter mais que 2 algarismos ou está vazio.');
  return false;
  }
  if ((mm_tamanho > 2) || (mm_tamanho <= 0)) {
  alert('Campo MM não deve conter mais que 2 algarismos ou está vazio.');
  return false;
  }
  if ((aaaa_tamanho > 4) || (aaaa_tamanho <= 0)) {
  alert('Campo AAAA não deve conter mais que 4 algarismos ou está vazio.');
  return false;
  }
  
  // CHECANDO ESPACO
     if ((dd_espaco != -1) || (mm_espaco != -1) || (aaaa_espaco != -1)) {
     alert('Um dos campos de data (dd/mm/aaaa) contém espaco. CORRIJA!');
     return false;
     }

O que pode estar errado?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Rapaiz, você acredita que eu esqueci de chamar a função no form?

puuuuuuuuuutzzzzzzz...

foi mal..

mas é sempre assim, fazemos o mais dificil e erramos o mais fácil.. :rolleyes:

Agora sim esta funcionando, só falta fazer o foco do cursor mudar automaticamente de campo à medida em que são preenchidos respectivamente 2 digitos no campo dd, 2 no mm..

Como eu poderia fazer isso?

Link para o comentário
Compartilhar em outros sites

  • 0

oopa.. respondi sem ter logado, mas era euzinho mesmo..

esqueci de dizer tambem que não estou sabendo como fazer para que o campo somente aceite NÚMEROS, ou seja, não aceite string nenhuma nem caracteres especiais, somente números..

valeu té+ moçada

Link para o comentário
Compartilhar em outros sites

  • 0
Rapaiz, você acredita que eu esqueci de chamar a função no form?

puuuuuuuuuutzzzzzzz...

foi mal..

mas é sempre assim, fazemos o mais dificil e erramos o mais fácil.. :rolleyes:

Agora sim esta funcionando, só falta fazer o foco do cursor mudar automaticamente de campo à medida em que são preenchidos respectivamente 2 digitos no campo dd, 2 no mm..

Como eu poderia fazer isso?

Hehehe, isso é normal, erros acontecem :lol:

Agora vamos ao codigo de mudar de campo quando colocar as datas:

// Tirada do site http://www.skolbeats.com.br
function tabFicador()
    {
    this.checaTab = taber_ChecaTab;
    this.marcaPos = taber_MarcaPosTab;

    this.posTab = 0;
    function taber_MarcaPosTab( pos )
  {
  this.posTab = pos;
  }

    function taber_ChecaTab( campo )
  {
  if( campo.value.length == 2 )
      {
      this.posTab++;
      if( this.posTab < campo.form.elements.length  )
    {
    campo.form.elements[this.posTab].focus();
    }
      }
  }

    }//tabFicador()

var oTaber = new tabFicador();
Voce tera que verificar o nome dos campos etc. Agora validando:
<FORM name=formdata>
<INPUT onkeyup="oTaber.checaTab(this); oTaber.marcaPos(0)" maxLength=2 size=2 name=dia value=>
<INPUT onkeyup="oTaber.checaTab(this); oTaber.marcaPos(1)" maxLength=2 size=2 name=mes value=>
<INPUT maxLength=4 size=4 name=ano value=>
<INPUT name="submit" value="Entrar">
</form>

Ve se funciona esse codigo!

O de aceitar apenas numeros já já eu coloco aqui para voce, precisa lembrar o nome do site!

Link para o comentário
Compartilhar em outros sites

  • 0

Cara... essa parte de apenas entrar numeros e complicada, mas vamos lá!

function inserirMascara(valor, mascara) {
  var fimValor, fimMascara, posV, posM, ret;
  ret = "";
  posV = 0;
  posM = 0;
  fimValor = false;
  fimMascara = (mascara.length == 0) ? true : false;
  while (posV < valor.length) {
    if (!fimMascara && mascara.substr(posM, 1) != "X") {
      ret += mascara.substr(posM, 1);
      posM++;
      if (posM == mascara.length)
        fimMascara = true;
      }
    else {
      ret += valor.substr(posV, 1);
      posV++;
      posM++;
    }
  }
  return ret;
}

function editarCampo(evento, campo, tipo, mascara, prox) {
  var t, msk, virgula;
  if (evento.type == "keypress") {
    campo.value = eliminarCaracteresInvalidos(campo.value, tipo);
    campo.value = inserirMascara(campo.value, mascara);
    if (campo.value.length > campo.maxLength)
      campo.value = campo.value.substr(0, campo.maxLength);
  }
  if (evento.type == "keyup") {
    campo.value = eliminarCaracteresInvalidos(campo.value, tipo);
    campo.value = inserirMascara(campo.value, mascara);
    if (prox != null && campo.value.length == campo.maxLength)
      prox.focus();
  }
  t = evento.keyCode;
  if ((t>=16&&t<=20) || (t>=33&&t<=39) || (t>=44&&t<=45) || (t>=112&&t<=123) || (t>=144&&t<=145) || t==12)
    return; 
  if ('ALNX'.indexOf(tipo, 0) != -1)
    campo.value = campo.value.toUpperCase();
  if (mascara != null && mascara != "" )
    if (campo.style.textAlign == "right") {
      msk = right(mascara, campo.value.length);
      campo.value = eliminarCaracteresInvalidos(campo.value, tipo);
      campo.value = eliminarZerosEsquerda(campo.value);
      mascara = inverter(mascara);
      virgula = mascara.indexOf(",")
      if (virgula > -1 && campo.value.length > 0)
        campo.value = preencheZeros(campo.value, virgula + 1)
      valor = inverter(campo.value);
      valor = inserirMascara(valor, mascara);
      campo.value = inverter(valor);
    }
    else {
      campo.value = eliminarCaracteresInvalidos(campo.value, tipo);
      campo.value = inserirMascara(campo.value, mascara);
      if (campo.value.length > campo.maxLength)
        campo.value = campo.value.substr(0, campo.maxLength);
    }

}

function eliminarCaracteresInvalidos(valor, tipo) {
  var i, ret, caracteres;
  if (tipo == "9")
    caracteres = "0123456789";
  else if (tipo == "A" || tipo == "a" )
    caracteres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
  else if (tipo == "L" || tipo == "l" )
    caracteres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  else if (tipo == "N" || tipo == "n" )
    caracteres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  else if (tipo == "T" || tipo == "t" )
    caracteres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ÁáÉéÍíÓóÚúÀàÇçÃãÕõ-=*&#+\/,.;:";
  ret = "";
  for (i = 0; i < valor.length; i++)
    if (tipo == 'x' || tipo == 'X')
      ret += valor.substr(i, 1);
    else
      if (caracteres.indexOf(valor.substr(i, 1), 0) != -1)
        ret += valor.substr(i, 1);
  return ret; 
}
Isso ai vai ser necessario! No form voce faz algo do tipo:
<input type="text" name="cpfTemp" size=12 maxlength=11 onKeyUp="editarCampo(event, this, '9', 'XXXXXXXXXXX', document.forms[0].senhaTemp)" onKeyPress="editarCampo(event, this, '9', 'XXXXXXXXXXX', document.forms[0].senhaTemp)">

Esse document.forms[0].senhaTemp é a mesma coisa que eu passei para voce ai em cima, este aqui está completo já. senhaTemp é o nome do campo.

Teste-o depois poste aqui se funcionou ou não!

Link para o comentário
Compartilhar em outros sites

  • 0

Tem um cod. mais simples para isso...

if(FORMULARIO.CAMPO.value.length<2)

{

alert("Esqueceu de Preencher o Campo ***")

FORUMALIO.CAMPO.focus()

}

ex:

<FORM NAME=teste>

Digite o Dia: <INPUT NAME=nome SIZE=2 MAXLENGTH=2>

<INPUT TYPE=button ONCLICK="testa()" VALUE=ok>

</FORM>

<script>

if(teste.nome.value.length<2||teste.nome.value.length>2)

{

alert("Ops! Calma ai o Dia não foi preenchido Corretamente!!!")

teste.nome.focus()

return true

}

</SCRIPT>

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...