permitir a partir do dia 3 dia

3 dia

by Rapha Souza

HTML

<script src="//code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- 
  Bootstrap docs: https://getbootstrap.com/docs
-->

<div class="container">
  <div class="row">
    <div class="col">
   <input type="date" id="txtDat" onchange="validadata(this)">
    </div>

  </div>

</div>


<script>

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();
   var a1 = hoje.getFullYear();

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

   var diff = d2.getTime() - d1.getTime();
   diff = diff / (1000 * 60 * 60 * 24);
   
   var dias = 3; // número de dias pra frente
   var a = (d1.getDay()+1)%7; // dia da semana de hoje+1
   var da = (d1.getDay()+3)%7; // dia da semana de hoje+3

   // se for 6 (sábado) ou 0 (domingo)
   if(a == 6 || da == 6 || da == 0){
      dias += 2;
   }else if(a == 0){
      dias += 1;
   }
   
   if(diff < dias){
      alert("Apenas data a partir do 3º dia");
   }else{
      alert("Data válida!");
   }
}

</script>

CSS

.row {
  background: #f8f9fa;
  margin-top: 20px;
}

.col {
  border: solid 1px #6c757d;
  padding: 10px;
}