Javascript validate before today

1

I'm trying to validate a date field of the 'txtDat' id, as follows:

I want you to tell me a date with a date earlier than today, show alert("Por favor, insira uma data futura.") , and if you tell me a date longer than 30 days, show alert("Por favor, insira uma data menor que 30 dias.") , or, if not, it follows.

As a base I have this code that I got here in the stack overflow to validate under and under 65

var data_ano = cad.txtDat.value;
var separa = ~data_ano.indexOf("/") ? "/" : "-";
var data_array = Number(data_ano.split(separa).filter(function(e){
   return e.length == 4;
}));

var este_ano = (new Date()).getFullYear();

if(data_array > este_ano-18 || data_array < este_ano-65){
   alert("É preciso ter 18 anos e menos de 65 anos.");
   return;
}

I tried instead of getfullyear o getday , tried several other things but could not do.

    
asked by anonymous 27.06.2018 / 23:48

1 answer

1

You can check if the reported date is before the current date or greater than 30 days from the current date:

function validadata(d){
   var data = d.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
   var dia = data_array[2];
   var mes = data_array[1];
   var ano = data_array[0];

   // para o IE onde será inserido no formato dd/MM/yyyy
   if(data_array[0].length != 4){
      dia = data_array[0];
      mes = data_array[1];
      ano = data_array[2];
   }

   var hoje = new Date();
   var d1 = hoje.getDate();
   var m1 = hoje.getMonth()+1;
   var a1 = hoje.getFullYear();

   var d1 = new Date(a1, m1, d1);
   var d2 = new Date(ano, mes, dia);

   var diff = d2.getTime() - d1.getTime();
   diff = diff / (1000 * 60 * 60 * 24);
   
   if(diff < 0){
      console.log("Data não pode ser anterior ao dia de hoje!");
   }else if(diff > 30){
      console.log("Data não pode ser mais do que 30 dias pra frente!");
   }else{
      console.log("Data válida!");
   }
   
}
<input type="date" id="txtDat" onchange="validadata(this)">
    
28.06.2018 / 01:37