Powerful Calendar Plugin With jQuery - Calendar.js

File Size: 15.5 KB
Views Total: 19960
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
Powerful Calendar Plugin With jQuery - Calendar.js

A lightweight, fast, customizable, and easy-to-style calendar component built on top of jQuery.

Key Features:

  • Switches between months with Next/Prev buttons.
  • Or directly switches between months from a selector UI by clicking the year.
  • Also allows you to select a year from a dropdown.
  • Allows you to set min/max dates.
  • Disabled dates are supported as well.
  • Useful callbacks that can be useful for date picker, month picker, or year picker.

How to use it:

1. Place the main script calendar.min.js after loading the latest jQuery library.

<script src="/path/to/cdn/jquery.slim.min.js"></script>
<script src="/path/to/calendar.min.js"></script>

2. Create a container to hold the calendar.

<div class="calendar-container"></div>

3. Call the function to generate a default calendar inside the container you just created.


4. Apply CSS classes to the calendar or include the following CSS files on the page.

<link rel="stylesheet" href="style.css" />
<link rel="stylesheet" href="theme.css" />

5. Determine the date to highlight on page load.

  date: new Date() // today

6. Set the length of names of days of the week. Default: 1.

  weekDayLength: 2

7. Disable dates using the disable function.

  date: new Date(),
  disable: function (date) { 
    return date < new Date(); 

8. Trigger a function when a date is selected.

  onClickDate: function (date) {
    // do something

9. More configurations to customize the calendar.


  // text for prev/next buttons
  prevButton: "Prev",
  nextButton: "Next",

  // custom separator between the month and the year in the month view.
  monthYearSeparator: " ",

  // false = 4 months in a row
  showThreeMonthsInARow: true,

  // whether to change either month or year
  enableMonthChange: true,

  // whether to disable year view
  enableYearView: true,

  // shows a Today button on the bottom of the calendar
  showTodayButton: true,
  todayButtonContent: "Today",

  // highlights all other dates with the same week-day
  highlightSelectedWeekday: true,

  // highlights the selected week that contains the selected date
  highlightSelectedWeek: true,

  // whether to enable/disable the year selector
  showYearDropdown: false,

  // min/max dates
  // Date Object or Date String
  min: null,
  max: null,

  // start on Sunday instead
  startOnMonday: false,

  // format week day
  formatWeekDay: function(weekDay) {
    // function to format the week day

  // format date
  formatDate: function(day) {
    // function to format date

  // map the month number to a string
  monthMap: {
    1: "january",
    2: "february",
    3: "march",
    4: "april",
    5: "may",
    6: "june",
    7: "july",
    8: "august",
    9: "september",
    10: "october",
    11: "november",
    12: "december",

  // map the week number to a string
  dayMap: {
    0: "sunday",
    1: "monday",
    2: "tuesday",
    3: "wednesday",
    4: "thursday",
    5: "friday",
    6: "saturday",

  // map the week number to a string when monday is the start of the week
  alternateDayMap: {
    1: "monday",
    2: "tuesday",
    3: "wednesday",
    4: "thursday",
    5: "friday",
    6: "saturday",
    7: "sunday",

10. More callback functions.


  onChangeMonth: function (date) {},
  onClickToday: function (date) {},
  onClickMonthNext: function (date) {},
  onClickMonthPrev: function (date) {},
  onClickYearNext: function (date) {},
  onClickYearPrev: function (date) {},
  onShowYearView: function (date) {},
  onSelectYear: function (date) {},

11. Get the selected date.

var calendar = $('.calendar-container').calendar();



  • JS Update

v1.3.0 (2021-12-18)

  • Added formatWeekDay function
  • Added formatDate function
  • Added monthMap Object
  • Added dayMap Object
  • Added alternateDayMap Object


  • v1.2.1: Bugfix for Safari.


  • v1.2: Added getSelectedDate method. Fix bug on wrong dates when startOnMonday is true


  • v1.1: Added the 'startOnMonday' flag. This allows you to start the month on Monday instead of Sunday.


  • v1.0: First stable release


  • Bugfix for Safari.

This awesome jQuery plugin is developed by wrick17. For more Advanced Usages, please check the demo page or visit the official website.