@atambalasi

Как переписать datepicker так чтобы работал с массивом данных?

Задача такая есть встречи у них несколько даты. В календаре нужно показвать ссылка на эти встреч. Например
"Встрача 1" дата(2016-07-25, 2016-07-15)
Использую плагин jquery datepicker
Код
events = [{"meet_start_date":"2016\/07\/04"},{"meet_start_date":"2016\/07\/16"},{"meet_start_date":"2016\/07\/02"},{"meet_start_date":"2016\/06\/28"},{"meet_start_date":"2016\/06\/24"},{"meet_start_date":"2016\/06\/15"},{"meet_start_date":"2016\/06\/14"}];

$('.datepicker').datepicker({
                dayNamesMin: ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'],
                minDate: '-0m',
                onChangeMonthYear: function(){
                    $('.schedule-wrapp').css('opacity',0);
                    setTimeout(function(){
                        $('.schedule-wrapp').animate({
                            opacity:1
                        },200)
                    },10)
                    setTimeout(setHeightDatepicker,0)
                },
                beforeShowDay: function(date) {
                    var result = [true, '', null];
                    var matching = $.grep(events, function(event) {
                        event.Date = new Date(event.lesson_start_date);
                        return event.Date.valueOf() === date.valueOf();
                    });
                    //alert(event);
                    if (matching.length) {
                        result = [true, 'highlight_days', null];
                    }
                    return result;
                },
                  dateFormat: "yy.mm.dd",
                onSelect: function(dateText) {
                    var date,
                        selectedDate = new Date(dateText),
                        i = 0,
                        event = null;

                    while (i < events.length && !event) {
                        date = events[i].Date;

                        if (selectedDate.valueOf() === date.valueOf()) {
                            event = events[i];
                        }
                        i++;
                    }
                    console.log(event);
                    if (event) {
                         window.location = '/today-lessons?date=' + event.Date.getFullYear() + "-" + ("0" + (event.Date.getMonth()  + 1)).slice(-2) + "-" + event.Date.getDate();
                    }
                     
                }
            });

Этот код работает только с одной датой. Мне нужно чтобы он принимал вот такой json
events = [["2016-07-25","2016-07-15"],[""],[""],[""],[""],[""],[""]];

т.е у каждой встречи есть несколько даты.
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Ridz
$(function() {
    var events = [
        ["2016-07-25", "2016-07-15"]
    ];
    function bigDay(date, arr) {
        return arr.some(function(el) {
            return el.some(function(d) {
                return d == date
            })
        })
    }

    $(".datepicker").datepicker({
        dateFormat: "yy-mm-dd",dayNamesMin: ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'],
        minDate: '-0d',
        beforeShowDay: function(date) {
            date = $.datepicker.formatDate("yy-mm-dd", date);
            return bigDay(date, events) ? [true, "highlight_days", null] : [true, "", null]
        },
        onSelect: function(dateText, elem) {
            bigDay(dateText, events) && ( window.location ="/today-lessons?date=" + dateText)
        }
    })
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы