nazar-pc / PickMeUp

Really simple, powerful, customizable and lightweight standalone datepicker
BSD Zero Clause License
615 stars 191 forks source link

Вывод даты #181

Closed peretc001 closed 7 years ago

peretc001 commented 7 years ago

Добрый день.

Подскажите, пожалуйста, как получить количество выделенных дней? Я нашел пример скрипта при изменении даты, но почему-то не выводится количество выделенных дней

<script>
pickmeup('.clndr', {
        change : function (formatted_date) {
            $('#return_date').val(addDays('d-m-Y',2));
        }
    });
</script>
<div id="return_date"></div>

Прошу не бить (в js познания 0) Спасибо

Полный код:

$(function () {

var lday = new Date;
    lday.setDate(lday.getDate() - 1);

var l2day = new Date;
    l2day.setDate(l2day.getDate() - 2);

var date = new Date;

var tday = new Date;
    tday.setDate(tday.getDate() + 1);

    pickmeup('.clndr', {
        flat      : true,
        date      : [
            new Date,
            tday
        ],
        mode      : 'range',
        calendars : 1,
        format: 'd-m-Y',
        separator:';',
        select_month :false,
        select_year  : false,
        render : function (l2day) {
        if (l2day < lday) {
            return {disabled : true, class_name : 'date-in-past'};
        }
        return {};
    } 
    });
    pickmeup('.clndr').get_date('d-m-Y');
    pickmeup('.clndr', {
        change : function (formatted_date) {
            $('#return_date').val(addDays(formatted_date,2));
        }
    });

});
nazar-pc commented 7 years ago

У вас код для старой версии библиотеки. Для современной изменение ловить нужно так: https://github.com/nazar-pc/PickMeUp#pickmeup-change В случае диапазонов и множественного выбора аргумент будет массивом, так что из него можете и получить количество выделенных дней.

Старая версия, впрочем, вела себя аналогично.

peretc001 commented 7 years ago

Ага, спасибо, так работает

$('.clndr').on('pickmeup-change', function (e) {
        console.log(e.detail.formatted_date); // New date according to current format
        console.log(e.detail.date);           // New date as Date object
    });
peretc001 commented 6 years ago

can i ask you one more things? do you have a function which display a count of selected days?

nazar-pc commented 6 years ago

https://github.com/nazar-pc/PickMeUp#get-date

pickmeup('.date').get_date().length

Read the readme first, please.

peretc001 commented 6 years ago

i dont understand, i choose different days, butcount` shows always 2

$('.clndr').on('pickmeup-change', function (e) {
var count = pickmeup('.clndr').get_date().length;
console.log(count);
nazar-pc commented 6 years ago

Yeah, this means you're using range mode, in which case you can simply check how many days are there between those 2 dates:

var dates_range = pickmeup('.date').get_date();
Math.round((dates_range[1] - dates_range[0]) / 3600 / 24 / 1000)

This is are basics of JavaScript.

peretc001 commented 6 years ago

thank you so much my basic of JS is - writeLn('Hello World!') :)

peretc001 commented 6 years ago

if i disabled some days, how can i check selected days without disabled in range mode

var dates_range = pickmeup('.date').get_date();
Math.round((dates_range[1] - dates_range[0] - dates_range[disabled] ) / 3600 / 24 / 1000)

and from this

$('.clndr').on('pickmeup-change', function (e) {
   console.log(e.detail.formatted_date - disabled); 
});
peretc001 commented 6 years ago

try to select before and after disabled days https://jsfiddle.net/peretc001/us55fztz/

nazar-pc commented 6 years ago

You're deciding in render callback which dates are disabled. Which in turn means you are able to exclude those dates from resulting range. This is not about library itself, but rather about basic JavaScript and dates manipulation.