Search code examples
javascriptjqueryflatpickr

Error in fetching deselected date in flatpickr


I am using flatpickr as a datetime picker on my app. This date picker allows for multiple dates to be selected. I am getting the date which I have last selected (the dates which are selected looks like marked ). But the problem is when I choose a date randomly from multiple dates I can't fetch that date .

Here is my jQuery Code

$("#available-calendar").flatpickr({
    disableTime: true,
    dateFormat: "Y-m-d",
    inline: true,
    mode: "multiple",
    minDate: "today",

    defaultDate: newDates,
    onChange: function(selectedDates, dateStr, instance) {
        var selectedDates = dateStr.split(",");
        var latestDate = selectedDates[selectedDates.length-1];
        console.log(latestDate);
        alert(latestDate);
    },
});

here newDates are array Of Dates fetching from database.


Solution

  • I afraid there is no support method from flatpickr now. I will give you a trick to get deselected date by store it in global variable. it might work in your case

    $(() => {
      let defaultDate = ["2018-06-20", "2018-06-22"]
      let selected = _.cloneDeep(defaultDate)
      $("#test").flatpickr({
        disableTime: true,
        dateFormat: "Y-m-d",
        inline: true,
        mode: "multiple",
        minDate: "today",
        defaultDate: defaultDate,
        onChange: function(selectedDates, dateStr, instance) {
    
          let newDate = _.chain(dateStr)
            .split(',')
            .map(_.trim)
            .value();
          if (newDate.length < selected.length ) {
            let deselected = _.difference(selected, newDate);
            console.log(deselected)
          } 
          selected = _.cloneDeep(newDate)
        }
      });
    });
    

    demo => https://codepen.io/anon/pen/zaEGOK