Я использую Kartik datepicker
и пытаюсь выделить определенные дни, которые возвращаются из ответа AJAX
в форме array
.Дни стали жирными, но они делают слишком много AJAX
звонков, и всякий раз, когда я хочу изменить месяц, для этого требуется немного больше времени.Вот мой код
<?php
echo DatePicker::widget([
'name' => 'check_multiple_date',
'type' => DatePicker::TYPE_INLINE,
'options' => ['placeholder' => 'Select issue date ...', 'id' => 'date-picker-multiple', 'toggleActive' => true],
'pluginOptions' => [
'format' => 'dd-M-yyyy',
'todayHighlight' => false,
'multidate' => true,
'beforeShowDay' => new JsExpression($JsBeforeDay)
],
]);
?>
А ниже - JQuery
для AJAX
звонка и полужирный несколько дней.
<?php
$JsBeforeDay = <<<EOF
[enter image description here][1]function(date){
var dates;
var duration =30;
$.ajax({
async: false,
url: siteDomain+'/reservation/find-reservations-by-duration?duration='+duration,
type: 'POST',
data: {format: 'json'},
success: function(response) {
dates = response;
},
error: function(response) {
}
});
var year = date.getFullYear(), month = date.getMonth(), day = date.getDate();
for (var i=0; i < dates.length; ++i)
if (year == parseInt(dates[i][0]) && month == parseInt(dates[i][1]) - 1 && day == parseInt(dates[i][2]))
return {classes: 'bold-text'};
return [false];
}
EOF;
?>
В результате формат определенных дней меняется, но онсовершает слишком много вызовов AJAX
, как показано на рисунке Нажмите для изображения