Intereting Posts

Использование beforeShowDay в пользовательском интерфейсе JQuery Datepicker для закрытия дней недели

то, что я пытаюсь сделать, является серым в некоторые дни недели для места проведения, когда он закрыт. Каждое место может быть закрыто в разные дни.

Я могу использовать следующий код в качестве теста для закрытия всех воскресений:

$('#bookingDatepicker').datepicker({ minDate: 0, maxDate: '+3M', dateFormat: 'DD, d MM, yy', altField: '#actualDate', altFormat: 'yy-mm-dd', beforeShowDay: closedDays }); function closedDays(date) { if (date.getDay() == 0){ return [false,"","Venue Closed"]; } else { return [true, ""]; } } 

Однако мне может потребоваться закрыть более одного дня, и они могут не работать рядом друг с другом. В моем коде из базы данных я могу создать строку, примеры ниже, которые показывают, какие дни открыты …

 1,2,3,4,5,6,0 //I would want to show no days closed 2,3,4,5,6 //I would want to show Sunday (0) and Monday (1) closed 

Я не уверен, что делать с этим, чтобы получить вышеприведенный код. Я использую PHP для создания строки, поэтому могу манипулировать ею, если это необходимо.

РЕДАКТИРОВАТЬ

Как обычно, когда вы отправляете вопрос, вы получаете небольшой прорыв! Я разработал код ниже, он работает, если я использую в нем фиктивные данные, однако мне нужно найти способ обернуть мои строковые значения в «". Это вызывает у меня проблемы, если я просто использую var cloDays = [2,3,4,5], он перестает работать

 var cloDays = ["2","3","4","5"]; function closedDays(date){ var sDate = date.getDay().toString(); if ($.inArray(sDate, cloDays) == -1) return [false,"","Venue Closed"]; else return [true, ""]; } 

этот пост не решил мою проблему, но указал мне в правильном направлении.

Это то, что я работал так, как хотел:

 var unavailableDates = ["9-5-2011","10-5-2011"]; function unavailable(date) { dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); if ($.inArray(dmy, unavailableDates) == -1) { return [true, ""]; } else { return [false,"","Unavailable"]; } } $('#iDate').datepicker({ minDate: +1, beforeShowDay: unavailable }); 

Это блокирует все даты в прошлом, включая сегодня, а затем блокирует даты, указанные в массиве unavailableDates.

Удалось исправить это, запустив мою строку через приведенный ниже код, в основном взорвав его в массив PHP, а затем закодирует его с помощью JSON_Encode. Кажется, отлично работает:

 $cloDays = json_encode(explode(",", $cloDays));