Я впервые обращаюсь за помощью, поэтому извиняюсь за неправильный формат или уровень детализации. Я хочу, чтобы даты выбора даты меняли свой цвет фона для всех дат, которые соответствуют набору дат в массиве дат (highlight_dates). Мой код работает с введенным вручную массивом, но НЕ для программно введенных дат.
Как сравнивать даты
Чтобы проверить, есть ли дата в массиве, я использую 'inArray '(L11 в следующем коде):
1. $('#calendar').datepicker({
2. beforeShowDay: function(date){
3. var month = date.getMonth()+1;
4. var year = date.getFullYear();
5. var day = date.getDate();
6. // Change format of date
7. var newdate = day+"-"+month+'-'+year;
8. // Set tooltip text when mouse over date
9. var tooltip_text = "Results available for " + newdate;
10. // Check date in Array
11. if(jQuery.inArray(newdate, highlight_dates) != -1){
12. return [true, "highlight", tooltip_text ];
13. }
14. return [true];
15. }
16. });
(L12 "выделение" вызывает CSS форматирование) Это работает нормально, когда я использую массив, который я создаю вручную (введите), как в: var highlight_dates = ['10 -9-2019 ',' 16-5-2019 'и т. Д.]; Все даты, которые соответствуют датам в массиве, меняют свой цвет фона в DatePicker - но когда я использую JSON для получения дат программным образом (из внешнего каталога), ни одна из дат DatePicker не меняет цвет.
Как я получаю даты из внешнего каталога
Я использую следующий код, чтобы получить даты из каталога (вызывая код perl, как в L4):
1. function getResults() {
2. $.ajax({
3. type: 'POST',
4. url: 'getResultsFilenames5.pl',
5. success: function(res) {
6. //alert("reached L37 and JSON data is : " + res.result);
7. //localStorage.setItem('dateArray', JSON.stringify(res.result));
8. localStorage.setItem('dateArray', res.result);
9. var resultDates = localStorage.getItem('dateArray')
10. //var resultDates = JSON.parse(localStorage.getItem('dateArray'));
11. },
12. error: function() {alert("something didn't work!!");
13. }
14. });
15. }
Результаты помещаются в localStorage (L8), чтобы их можно было извлечь при необходимости.
Результаты, которые я получаю
Когда я отображаю даты (L6) - ВЫХОД ИЗ res.result - они выглядят так:
23-05-2019,07-10-2019,20-06-2019,01-06-2019,30-05-2019,29-04-2019,,25-04-2019,03-10-2019,16-05-2019,,17-06-2019 (no square brackets or apostrophes).
Однако, с добавлением квадратных скобок и апострофов в коде perl (который извлекает даты), массив дат выглядит точно так же, как ручной массив, когда я отображаю их с помощью «alert» (L 6) , так что я думаю, что проблема не в программировании, а, скорее, в несоответствии форматирования между форматом datepicker и форматом, возвращаемым JSON, или использованием localStorage.
Я пробовал используя 'stringify' (L7) и 'parse' (L10), чтобы изменить формат даты, но это не имело никакого эффекта. Я также (в отчаянии) попытался изменить вывод perl на скалярный (используя 'qq (@files')) - но опять же, без выделения даты.
Я не знаю, что делать чтобы решить проблему, и я был бы благодарен за любые советы, которые вы можете предложить.