beforeShowDay не работает - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь отключить все дни, кроме тех, которые отправляю в переменной days, но она не работает ...

if (dias !=null && dias!="" && dias!='undefined'){  
        var days  = dias.split(',');    
        //$('#sandbox-container-'+num).datepicker('setDates', days);

        $('#sandbox-container-'+num).datepicker({


            beforeShowDay: function(d) {
                var dmy = (d.getMonth()+1)
                if(d.getMonth()<9) 
                    dmy="0"+dmy; 
                dmy+= "/"; 

                if(d.getDate()<10) dmy+="0"; 
                    dmy+=d.getDate() + "/" + d.getFullYear(); 

                console.log(dmy+' : '+($.inArray(dmy, days)));

                if ($.inArray(dmy, days) != -1) {
                    return [true, "","Available"]; 
                } else{
                     return [false,"","unAvailable"]; 
                }
            }

        }).datepicker('setDates', days).attr("readonly", "readonly");

    }   

1 Ответ

0 голосов
/ 18 мая 2018

Что ж, в этом случае вы можете использовать beforeShowDay, а затем ежедневно проверять свой массив и проверять, являются ли некоторые опции действительными.

Как вы можете видеть, мы проверяем день, в который мы попадаемфункция и начинает сравнивать, если находится в массиве, затем вернуть true и день будет активным.

Теперь есть небольшая проблема в том, что формат немного отличается, потому что я использую дату JavaScript, но это легко решитьиспользование moment.js [ сделает позже ]

var enableDates = ['17/5/2018', '18/5/2018', '19/5/2018', '7/5/2018'];


$('#sandbox-container input').datepicker({
  format: "dd/mm/yyyy",
  autoclose: true,
  beforeShowDay: function(date) {
    var currentDate =
      date.getDate() + '/' +
      (date.getMonth() + 1) +
      '/' + date.getFullYear();
    return (enableDates.indexOf(currentDate) != -1)
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/js/bootstrap-datepicker.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/css/bootstrap-datepicker.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<br/>
<div class="span5 col-md-5" id="sandbox-container">
  <input class="form-control" type="text">
</div>
...