Multi-language jQuery Date Range Picker Plugin
| File Size: | 170 KB |
|---|---|
| Views Total: | 39011 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A fully customizable, cross-browser and multi-language jQuery date picker plugin that enables the users to select custom (or predefined) date ranges with ease.
Installation:
# Yarn $ yarn add jquery-date-range-picker # NPM $ npm install jquery-date-range-picker --save
How to use it:
1. Load the necessary jQuery library and moment.js in your project.
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
2. Load the jQuery Date Range Picker plugin's JS and CSS after jQuery library.
<link rel="stylesheet" href="daterangepicker.css"> <script src="jquery.daterangepicker.js"></script>
3. Create a basic date range picker with default settings.
$('#SELECTOR').dateRangePicker();
4. Full plugin options.
// Auto close
autoClose: false,
// The date format string used for Moment.
format: 'YYYY-MM-DD',
// The separator string used between date strings
separator: ' to ',
// pre-defined languages are "en" and "cn", you can define your own language then set this to the name of new language.
// You can also set this to "auto" to make it auto detect browser language.
language: 'auto',
// "sunday" or "monday"
startOfWeek: 'sunday',
// This function is called when get date range string from DOM
// When it is called, the context of this function is set to the datepicker DOM
getValue: function() {
return $(this).val();
},
// This function is called when set date range string to DOM
setValue: function(s){
if(!$(this).attr('readonly') && !$(this).is(':disabled') && s != $(this).val()){
$(this).val(s);
}
},
// This string defines the earliest date which is allowed for the user, same format as `format`
startDate: false,
// This string defines the latest date which is allowed for the user, same format as `format`
endDate: false,
// If enabled adds time selection controls.
time: {
enabled: false
},
// This number defines the minimum days of the selected range
// if this is 0, means do not limit minimum days
minDays: 0,
// This number defines the maximum days of the selected range
// if this is 0, means do not limit maximum days
maxDays: 0,
// hide or show shortcuts area
showShortcuts: false,
// define the shortcuts buttons.
shortcuts:
{
//'prev-days': [1,3,5,7],
//'next-days': [3,5,7],
//'prev' : ['week','month','year'],
//'next' : ['week','month','year']
},
// define custom shortcut buttons.
customShortcuts : [],
// whether to render the date range picker dom in inline mode instead of overlay mode,
// if set to true, please set `container` too
inline:false,
// where should the date range picker dom should be renderred to
container:'body',
// if you use inline mode, you may want the date range picker widget to be renderred when the page loads set this to true will also hide the "close" button
alwaysOpen:false,
// choose a single date instead of a date range.
singleDate:false,
lookBehind: false,
// auto batch select mode
// false (default), week, month, week-range, month-range
batchMode: false,
duration: 200,
// If true, there will only be one previous and one next button.
// Clicking them will change both the months.
// This setting will have no effect if singleDate option is set to true
stickyMonths: false,
dayDivAttrs: [],
dayTdAttrs: [],
applyBtnClass: '',
// If true, it will show only one month instead of two months.
// You can select date range in the one month view.
// If this is set to 'auto', it will be changed to true if the screen width is lower than 480.
singleMonth: 'auto',
hoveringTooltip: function(days, startTime, hoveringTime)
{
return days > 1 ? days + ' ' + lang('days') : '';
},
// If show the top bar.
showTopbar: true,
// If true and if time is enabled, on choosing first enddate and than startdate, endtime and starttime will be swapped.
// If this configkey is false, only date will be swapped, time will stay constant.
// If time is disabled, this config key is not used.
swapTime: false,
// If this is true, you can only select second date after the first selected date.
selectForward: false,
// If this is true, you can only select second date before the first selected date.
selectBackward: false,
// If this is true, it will show week number of the year in the calendar.
showWeekNumbers: false,
// the function called to generate the week number. the first parameter will be the first day of a week
getWeekNumber: function(date) //date will be the first day of a week
{
return moment(date).format('w');
},
customOpenAnimation: null,
customCloseAnimation: null,
customArrowPrevSymbol: null,
customArrowNextSymbol: null,
monthSelect: false,
yearSelect: false
5. Event handlers.
$('#dom-id')
.dateRangePicker()
.on('datepicker-first-date-selected', function(event, obj)
{
/* This event will be triggered when first date is selected */
console.log(obj);
// obj will be something like this:
// {
// date1: (Date object of the earlier date)
// }
})
.on('datepicker-change',function(event,obj)
{
/* This event will be triggered when second date is selected */
console.log(obj);
// obj will be something like this:
// {
// date1: (Date object of the earlier date),
// date2: (Date object of the later date),
// value: "2013-06-05 to 2013-06-07"
// }
})
.on('datepicker-apply',function(event,obj)
{
/* This event will be triggered when user clicks on the apply button */
console.log(obj);
})
.on('datepicker-close',function()
{
/* This event will be triggered before date range picker close animation */
console.log('before close');
})
.on('datepicker-closed',function()
{
/* This event will be triggered after date range picker close animation */
console.log('after close');
})
.on('datepicker-open',function()
{
/* This event will be triggered before date range picker open animation */
console.log('before open');
})
.on('datepicker-opened',function()
{
/* This event will be triggered after date range picker open animation */
console.log('after open');
})
6. API methods.
//after you called $(dom).dateRangePicker();
$(dom).data('dateRangePicker')
.setDateRange('2013-11-20','2013-11-25'); //set date range, two date strings should follow the `format` in config object, set the third argument to be `true` if you don't want this method to trigger a `datepicker-change` event.
.clear(); // clear date range
.close(); // close date range picker overlay
.open(); // open date range picker overlay
.destroy(); // destroy all date range picker related things
Changelog:
v0.20.1 (2020-10-28)
- Update node engine requirement
v0.20.0 (2018-09-27)
- updated
v0.19.0 (2018-08-17)
- updated
v0.18.0 (2018-04-23)
- Ukrainian language added
v0.17.0 (2018-04-18)
- add hovering effect on day elements
- add sticky month mode
- add single month mode
- enable adding elements on each day element
- available to hide the top bar
- no longer support IE6,7
- fix many bugs and style issues
2018-04-10
- v0.16.4: fix Memory leak when unbinding document events
2018-04-06
- v0.16.3: fix month undefined
2018-04-04
- v0.16.2: Use moment.js to calculate the difference between dates
2017-12-15
- v0.16.1: Remove inline style (#362) and refactor style to real SCSS
2017-07-29
- v0.16.0: Comfortable month and year change
2017-07-03
- v0.15.0: Calculate left offset in respect of window limits
2017-03-29
- v0.14.4: JS update
2017-01-23
- v0.14.3: JS update
2016-11-08
- v0.14.2: Added Finnish translation
2016-10-24
- v0.14.0: jQuery 1.3.2 support
2016-10-05
- v0.13.0: Fix Russian translation
2016-10-05
- v0.12.0
2016-09-29
- Add options to change the start and end date on the fly
2016-09-22
- v0.9.0
2016-09-05
- Do not invoke setTime on 'mousemove' event
2016-07-25
- JS update.
2016-06-27
- Rewrite jQuery variable to local in attributesCallbacks function
2016-05-26
- v0.5.1
2016-03-11
- Add api-method to reset months view to default
2016-02-04
- added check date in checkAndSetDefaultValue, because moment.js 2.10.3+ now return "Invalid date"
2016-01-27
- add support for custom animation
2016-01-21
- Bugfix with broken selection
2016-01-19
- added touchmove to time inputs for mobile devices
2016-01-05
- Fixed Close immediately after opening
2015-08-30
- Fixed singleDate and endDate issue
2015-08-27
- Make week number clickable
2015-08-23
- Fixed: Click issue with iOS device
2015-08-22
- Fixed: Hovering tooltip is wrong, if time is set from 00:00 to 23:59
- Fixed: Month with endDate does not show up when in week batch mode
2015-06-23
- Fixed: Cannot enter range manually
2015-06-21
- add argument to setDateRange to avoid event triggering when set to true
2015-05-14
- add argument to setDateRange to avoid event triggering when set to true
2015-05-10
- Add open and close events for datepicker
2015-05-06
- fix keyword error for IE8
- fix hidden shortcuts shouldn't hide the custom values
2015-04-23
- fix plugin module export and remove warning if moment is not in the global scope
2015-04-21
- Set optional autoclose for custom dates
2015-04-15
- Add option to set class on the apply-btn
2015-04-14
- Add config callbacks to modify td and div day tags
2015-03-31
- fix bug, open, format date with locale
This awesome jQuery plugin is developed by longbill. For more Advanced Usages, please check the demo page or visit the official website.










