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

Valida Data


Eduardo Faula

Pergunta

Alguém sabe por que o código abaixo não funciona no Firefox? Ou seja ele dá o Alert que a data esta errada, mas perde o foco.

No Internet Explorer funciona perfeitamente.

Obrigado.

function verificaData(nomeForm,nomeCampo) {
  eval("strCampo = document." + nomeForm + "." + nomeCampo);
  if (strCampo.value != "") {
    dia = strCampo.value.substring(0,2);
    mes = strCampo.value.substring(3,5);
    ano = strCampo.value.substring(6,10);
    situacao = true;
    // verifica o dia valido para cada mes
    if ((dia < 01)||(dia < 01 || dia > 30) && (  mes == 04 || mes == 06 || mes == 09 || mes == 11 ) || dia > 31)
      situacao = false;
    // verifica se o mes e valido
    else if (mes < 01 || mes > 12 )
      situacao = false;
    // verifica se e ano bissexto
    else if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4))))
      situacao = false;
    if (!situacao) {
      alert("Data Inválida!");
      strCampo.select();
    }
  }
}

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Fala ae Eduardo, num uso Firefox cara mas o que você esta falando é que ele num ta rodando isso aqui ?

strCampo.select();

Tentou trocar por focus() ?

abraço

Miqui

Link para o comentário
Compartilhar em outros sites

  • 0

function verificaData(nomeForm,nomeCampo) {

strCampo = document.forms[nomeForm].elements[nomeCampo];

if (strCampo.value != "") {

  dia = strCampo.value.substring(0,2);

  mes = strCampo.value.substring(3,5);

  ano = strCampo.value.substring(6,10);

  situacao = true;

  // verifica o dia valido para cada mes

  if ((dia < "01")||(dia < "01" || dia > "30") && (  mes == "04" || mes == "06" || mes == "09" || mes == "11" ) || dia > "31")

    situacao = false;

  // verifica se o mes e valido

  else if (mes < "01" || mes > "12" )

    situacao = false;

  // verifica se e ano bissexto

  else if (mes == "2" && ( dia < "01" || dia > "29" || ( dia > "28" && (parseInt(ano / 4) != ano / 4))))

    situacao = false;

  if (!situacao) {

    strCampo.select();

    strCampo.focus();

    alert("Data Inválida!");

  }

}

}

tenta ver se assim funciona...

Link para o comentário
Compartilhar em outros sites

  • 0

Mas então o problema é no teu navegador, testei aqui e funcionou beleza...

*** Editado ***

Cara agora eu tava lendo de novo, em que evento você está chamando esta chamando esta function? onblur? se for troque para onchange...

Abraço

Editado por Crystian
Link para o comentário
Compartilhar em outros sites

  • 0

Crystian em qual versão do Firefox você testou?

Eu testei no Mozilla 1.7.3 e no Firefox 1.0.3 e os dois retornaram o erro.

Erro: too much recursion
Sabe o que é isto? Será que não teria como eu utilizar o try...catch para ignorar este erro? Função:
function verificaData(nomeForm,nomeCampo) {
  var strCampo = document.forms[nomeForm].elements[nomeCampo];
  if (strCampo.value != "") {
    dia = strCampo.value.substring(0,2);
    mes = strCampo.value.substring(3,5);
    ano = strCampo.value.substring(6,10);
    situacao = true;
    // verifica o dia valido para cada mes
    if ((dia < 01)||(dia < 01 || dia > 30) && (  mes == 04 || mes == 06 || mes == 09 || mes == 11 ) || dia > 31)
      situacao = false;
    // verifica se o mes e valido
    else if (mes < 01 || mes > 12 )
      situacao = false;
    // verifica se e ano bissexto
    else if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4))))
      situacao = false;
    if (!situacao) {
      strCampo.focus();
      strCampo.select();
      alert("Data Inválida!");
    }
  }
}
Chamada:
<input type="text" size="10" maxlength="10" name="data"
     onKeyPress="return mascaraData(form.name,this.name,event); return false;"
     onBlur="verificaData(form.name,this.name);">

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