Validate date field with javascript

1

I have a field of type date , with name txtdata_nasc . I need a validation for it. I need you to have a button on his side that can validate it.

If a person enters a birthday under the age of 18, I want a alert("Pessoas menores de 18 não podem se cadastrar.") to appear, and if he enters a birthday between the ages of 18 and 60, that appears alert("Maior de 18, pode se cadastrar.") . The person can not put a date that makes it to be more than 60 years.

Please, I want this code to return on a button with onclick='return validadata()' as for example.

    
asked by anonymous 11.05.2018 / 05:18

1 answer

1

You can use this function, which checks the age according to the date entered in input (explanations in the code):

function validadata(){
   var data = document.getElementById("nascimento").value; // pega o valor do input
   data = data.replace(/\//g, "-"); // substitui eventuais barras (ex. IE) "/" por hífen "-"
   var data_array = data.split("-"); // quebra a data em array
   
   // para o IE onde será inserido no formato dd/MM/yyyy
   if(data_array[0].length != 4){
      data = data_array[2]+"-"+data_array[1]+"-"+data_array[0]; // remonto a data no formato yyyy/MM/dd
   }
   
   // comparo as datas e calculo a idade
   var hoje = new Date();
   var nasc  = new Date(data);
   var idade = hoje.getFullYear() - nasc.getFullYear();
   var m = hoje.getMonth() - nasc.getMonth();
   if (m < 0 || (m === 0 && hoje.getDate() < nasc.getDate())) idade--;
   
   if(idade < 18){
      alert("Pessoas menores de 18 não podem se cadastrar.");
      return false;
   }

   if(idade >= 18 && idade <= 60){
      alert("Maior de 18, pode se cadastrar.");
      return true;
   }
   
   // se for maior que 60 não vai acontecer nada!
   return false;
}
<input type="date" name="nascimento" id="nascimento">
<button type="button" onclick='return validadata()'>Validar</button>
    
11.06.2018 / 03:46