Ir para conteúdo

POWERED BY:

Arquivado

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

Rodolpho Schimitd

Validar data de nascimento

Recommended Posts

Tenho um campo no formulário para o usuario digitar a data de nascimento, mas essa data não pode ser inválida, por exemplo: a data informada nao pode ser menor que a data atual. (o usario não pode inserir como data de nascimento a data de amanha)

 

Me ajudem com essa função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá amigo aqui tem uma função passe o dia, mes e ano separado para ela, que ela ira retornar um valor booleano

 

function valida_nascimento(dia,mes,ano){
         valid=true;
         
         //Verificando se a data é valida
            erro='';
            //verifica dia
            valid=((dia<32)&&(dia>0))?true:false;
            erro+=(valid==false)?' Dia invalido! ':'';
            //verifica mes
            validmes=((mes<13)&&(mes>0))?true:false;
            erro+=(validmes==false)?' Mes invalido! ':'';
            valid=((valid==true)&&(validmes==true))?true:false;
            //verifica ano
            validano=((ano>0))?true:false;
            erro+=(validano==false)?' Ano invalido! ':'';
            valid=((valid==true)&&(validano==true))?true:false;
         
         //Se a data for valida verificar se ela não é maior que hoje
         if(valid==){
             var data=new Date(ano,mes,dia);
             var hoje=new Date();
             d1= Date.UTC(data.getYear(),data.getMonth(),data.getDate(),0,0,0);
             d2= Date.UTC(hoje.getYear(),hoje.getMonth(),hoje.getDate(),0,0,0);
             valid=(d1<d2)?true:false;
         }
         
         return valid;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá amigo aqui tem uma função passe o dia, mes e ano separado para ela, que ela ira retornar um valor booleano

 

function valida_nascimento(dia,mes,ano){
         valid=true;
         
         //Verificando se a data é valida
            erro='';
            //verifica dia
            valid=((dia<32)&&(dia>0))?true:false;
            erro+=(valid==false)?' Dia invalido! ':'';
            //verifica mes
            validmes=((mes<13)&&(mes>0))?true:false;
            erro+=(validmes==false)?' Mes invalido! ':'';
            valid=((valid==true)&&(validmes==true))?true:false;
            //verifica ano
            validano=((ano>0))?true:false;
            erro+=(validano==false)?' Ano invalido! ':'';
            valid=((valid==true)&&(validano==true))?true:false;
         
         //Se a data for valida verificar se ela não é maior que hoje
         if(valid==){
             var data=new Date(ano,mes,dia);
             var hoje=new Date();
             d1= Date.UTC(data.getYear(),data.getMonth(),data.getDate(),0,0,0);
             d2= Date.UTC(hoje.getYear(),hoje.getMonth(),hoje.getDate(),0,0,0);
             valid=(d1<d2)?true:false;
         }
         
         return valid;
}

Mas se eu passar o dia, ano e mes separado como ficaria o meu input?

 

atualmente ele esta assim:

 

<input name="nasce" type="text"">  (dd/mm/yyyy)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto adaptei ela pode usar o formato dd/mm/aaaa normalmente.

 

functio.n valida_nascimento(dat){
         //Recebendo data no formato dd/mm/aaaa
         vet=dat.split("/");
         dia=vet[0];
         mes=vet[1];
         ano=vet[2];

         valid=true;
         
         //Verificando se a data é valida
            erro='';
            //verifica dia
            valid=((dia<32)&&(dia>0))?true:false;
            erro+=(valid==false)?' Dia invalido! ':'';
            //verifica mes
            validmes=((mes<13)&&(mes>0))?true:false;
            erro+=(validmes==false)?' Mes invalido! ':'';
            valid=((valid==true)&&(validmes==true))?true:false;
            //verifica ano
            validano=((ano>0))?true:false;
            erro+=(validano==false)?' Ano invalido! ':'';
            valid=((valid==true)&&(validano==true))?true:false;
         
         //Se a data for valida verificar se ela não é maior que hoje
         if(valid==){
             var data=new Date(ano,mes,dia);
             var hoje=new Date();
             d1= Date.UTC(data.getYear(),data.getMonth(),data.getDate(),0,0,0);
             d2= Date.UTC(hoje.getYear(),hoje.getMonth(),hoje.getDate(),0,0,0);
             valid=(d1<d2)?true:false;
         }
         
         return valid;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

No script postado pelo Luis, falta verificar ano bissexto e se o mes possui 31 ou 30 dias.

 

O ano bissexto é para o caso do mes de fevereiro que pode ter 28 ou 29 dias.

 

exemplo de validação de data

http://www.smartwebby.com/DHTML/date_validation.asp

 

sugestão de pesquisa:

http://www.bing.com/search?q=javascript+check_date&FORM=AWRE

 

 

lembrando que validar data é diferente de validar data de nascimento.

 

por exemplo, a data 3005-12-20 é uma data válida

 

mas não poderia ser válida como data de nascimento, pois é uma data no futuro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

function validarData(data){
    var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
    var vdt = new Date();
    var vdia = vdt.getDay();
    var vmes = vdt.getMonth();
    var vano = vdt.getFullYear();
    if ((data.match(expReg)) && (data != '')) {
        var dia = parseFloat(data.substring(0, 2));
        var mes = parseFloat(data.substring(3, 5));
        var ano = parseFloat(data.substring(6, 10));
        if ((mes == 4 && dia > 30) || (mes == 6 && dia > 30) || (mes == 9 && dia > 30) || (mes == 11 && dia > 30)) {
            mostrarErro("Data incorreta! O mês especificado contém no máximo 30 dias!");
            return false;
        }
        else if (ano % 4 != 0 && mes == 2 && dia > 28) {
            mostrarErro("Data incorreta! O mês especificado contém no máximo 28 dias!");
            return false;
        }
        else if (ano % 4 == 0 && mes == 2 && dia > 29) {
            mostrarErro("Data incorreta! O mês especificado contém no máximo 29 dias!");
            return false;
        }
        if (ano < vano) {
            mostrarErro("Data incorreta! O ano informado é menor que o atual!");
            return false;
        }
    }
    else {
        mostrarErro('Data inválida!');
        return false;
    }
    
    return true
}

Troque a função mostrarErro por um alert...

 

Para chamar, depende de como você quer fazer...

 

É no envio de algum form???

 

Se for, use onsubmit:

 

document.forms[0].onsubmit = function(){
      var validacao = validarData(this.campo_data.value);
      if(!validacao) return false;
}

Se não, use o evento onblur:

 

document.getElementById("CAMPO DE DATA").onblur = function(){
      var validacao = validarData(this.value);
      if(!validacao){
          this.focus();
          return false;
      }
}

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.