Range - Date Range Picker
Change demo
JQuery date range picker demo with start-end fields and usage with a single input. Use it for responsive mobile & desktop.
Range - Time range
Change demo
JQuery time range picker demo with from/until fields or usage in a single input. Scroller interface with validation/options.
Range - Date and time range
Change demo
JQuery Datetime range picker with start-end fields. Calendar or scroller UI for desktop and mobile usage.
Range - Flight Booking
Change demo
Build a flight booking date picker with the JQuery range component — round-trip and one-way selection.
// Use the settings object to change the theme
mobiscroll.settings = {
lang : ' ' ,
theme : ' ',
themeVariant : ' '
};
$(function () {
var now = new Date(),
oneWay = false,
range,
departureDate,
returnDate;
range = $('.md-leaving-date').mobiscroll().range({
display : 'bottom',
endInput : '.md-return-date',
min : now,
showSelector : false,
onSetDate : function (event, inst) {
if (oneWay && event.control == 'calendar' && event.active == 'start') {
inst._isVisible = false;
inst.setActiveDate('start');
inst._isVisible = true;
}
if (inst._markup) {
inst._isValid = true;
inst._markup.find('.mbsc-fr-btn-s .mbsc-fr-btn').removeClass('mbsc-fr-btn-d');
}
},
onBeforeClose : function () {
if (oneWay) {
return true;
}
},
onSet : function (event, inst) {
var values = inst.getVal();
departureDate = values[0];
if (!oneWay) {
returnDate = values[1];
}
}
}).mobiscroll('getInst');
departureDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 3);
returnDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 7);
range.setVal([departureDate, returnDate], true);
$('.md-place-select').mobiscroll().select({
placeholder: 'Please select',
multiline : 2,
height : 50,
data: {
url: 'https://trial.mobiscroll.com/airports/',
remoteFilter: true,
dataType: 'jsonp',
processResponse: function (data) {
var i,
item,
ret = [];
if (data) {
for (i = 0; i < data.length; i++) {
item = data[i];
ret.push({
value: item.code,
text: item.name,
html: '<div style="font-size:16px;line-height:18px;">' + item.name + '</div><div style="font-size:10px;line-height:12px;">' + item.location + ', ' + item.code + '</div>'
});
}
}
return ret;
}
},
filter: true
});
$('.md-flight-type').on('change', function () {
oneWay = this.value == 'oneway';
$('.md-return-date').prop('disabled', oneWay);
if (oneWay) {
range.setVal([departureDate, null], true);
} else {
returnDate = new Date(departureDate.getFullYear(), departureDate.getMonth(), departureDate.getDate() + 4);
range.setVal([departureDate, returnDate], true);
}
});
});
<div id="demo" class="md-flight-booking" style="display:none" mbsc-form>
<div class="md-header">Book a flight</div>
<div class="md-ftype-cont">
<label>
Round trip
<input type="radio" data-role="segmented" value="round" name="triptype" class="md-flight-type" checked />
</label>
<label>
One way
<input type="radio" data-role="segmented" value="oneway" name="triptype" class="md-flight-type md-one-way" />
</label>
</div>
<label>
Origin
<select class="md-place-select md-origin">
<option value="LTN">London Luton</option>
</select>
</label>
<label>
Destination
<select class="md-place-select md-destination">
<option>Please select a city</option>
</select>
</label>
<div class="md-time-range">
<label>
Leaving
<input type="text" class="md-leaving-date" />
</label>
<label>
Returning
<input type="text" class="md-return-date" />
</label>
</div>
<div>
<label for="md-flight-adults">Adults</label>
<span class="mbsc-desc">From 14 years</span>
<input id="md-flight-adults" type="number" data-role="stepper" min="1" value="1" max="15" data-val="left" />
</div>
<div>
<label for="md-flight-children">Children</label>
<span class="mbsc-desc">2-14 years</span>
<input id="md-flight-children" type="number" data-role="stepper" max="15" data-val="left" />
</div>
<div>
<label for="md-flight-infant">Infant</label>
<span class="mbsc-desc">0-2 years</span>
<input id="md-flight-infant" type="number" data-role="stepper" max="10" data-val="left" />
</div>
<label>
Economy
<input type="radio" data-role="segmented" name="flight_type" checked />
</label>
<label>
Comfort
<input type="radio" data-role="segmented" name="flight_type" />
</label>
<label>
Business
<input type="radio" data-role="segmented" name="flight_type" />
</label>
<div class="mbsc-padding">
<button class="mbsc-btn-block">Find Flights</button>
</div>
</div>
.md-flight-booking {
padding: 0!important;
}
.md-filter-cont {
padding: .5em;
}
/* header */
.md-flight-booking .md-ftype-cont {
padding-top: 1.15em;
}
.md-flight-booking .md-header {
background: #4ECCC4;
padding: 1em;
color: #fff;
text-align: center;
}
.mbsc-material .md-header {
background: #009688;
}
.mbsc-android-holo .md-header {
background: #31c6e7;
}
.mbsc-ios .md-header {
background: #1272dc;
color: #fff;
}
.mbsc-ios-dark .md-header {
background: #ff8400;
color: #1a1a1a;
}
.mbsc-wp .md-header {
background: #1a9fe0;
color: #000;
}
.mbsc-material-dark .md-header {
color: #303030;
background: #81ccc4;
}
.mbsc-android-holo-light .md-header {
color: #000;
}
.mbsc-mobiscroll-dark .md-header {
color: #263238;
}
/*select*/
.md-airports-booking .mbsc-sc-itm,
.md-airports-booking .dw-li {
text-align: center;
}
.md-airports-booking .md-airport {
width: 100%;
display: inline-block;
vertical-align: middle;
letter-spacing: normal;
}
.md-airports-booking .md-airport-name {
height: 18px;
line-height: 18px;
font-size: 16px;
overflow: hidden;
text-overflow: ellipsis;
}
.md-airports-booking .md-airport-location {
height: 12px;
line-height: 12px;
font-size: 10px;
overflow: hidden;
text-overflow: ellipsis;
}
.md-airports-booking #filter_input {
width: 100%;
padding: 6px;
box-sizing: border-box;
}
/* range inputs */
.md-flight-booking .md-time-range {
overflow: hidden;
width: 99%;
}
.md-flight-booking.mbsc-ios .md-time-range {
background: #fff;
}
.md-flight-booking .md-time-range .mbsc-input {
float: left;
width: 50%;
box-sizing: border-box;
}
.md-flight-booking.mbsc-ios .md-time-range .mbsc-input {
display: block;
}
.md-flight-booking.mbsc-ios .md-time-range .mbsc-input .mbsc-label {
font-size: 14px;
padding-left: 1.14285em;
padding-top: 0.75em;
line-height: 22px;
}
.md-flight-booking.mbsc-ios .md-time-range .mbsc-input .mbsc-label {
width: 100%;
}
.md-time-range .mbsc-input:first-child {
padding-right: .5em;
}
.md-time-range .mbsc-input:last-child {
padding-left: .5em;
}
/* Stepper */
.md-flight-booking.mbsc-form .mbsc-stepper-cont {
padding-top: 1.125em;
padding-bottom: 1.125em;
}
Range - Presets
Change demo
Offer one-click preset ranges — Today, Yesterday, This week, Last month — on the JQuery date range selector for fast filtering.
Range - New event
Change demo
JQuery New event create screen featuring a date range picker with start and end dates for multi-day events.
Range - Display modes
Change demo
JQuery datetime range picker with top, bottom, popup, center, modal, bubble, full screen and inline embed display.
Range - Event Hooks
Change demo
Attach custom logic to the JQuery date range picker using lifecycle event hooks that fire on user interaction.
Looking for something you didn't see or have a sales question? Ask us about it, we're here to help.
Ask us anything
Customize & try demos locally
Sign in or start your free trial
What framework are you using?
Javascript
jQuery
AngularJS
Angular
React
Other
Ionic Angular
Select a framework
Introducing the next generation of Mobiscroll
The Mobiscroll 5 Beta 4 includes the brand new Scheduler , Agenda and Event calendar , Date, time, calendar and Range picker components.
We’ll be gradually adding more components and functionality. If you want to give the new version a go, you can check them out below.
Other highlights
Redesigned event calendar, scheduler with drag & drop
A new way of working with recurring events
Updated themes with dynamic dark mode
New date & time pickers
Range picker with advanced customization
Dynamic options with global updates
Read the full blogpost
Get in touch
Customize & try this demo locally
Sign in or start your free trial
Install demo in your app
Follow this quick, two minute install guide
Close window
Install demo in your app
Follow this quick, two minute install guide
Close window
Customize & try demos locally
How would you like to do it?
Install demo in your app
Follow this quick, two minute install guide
Close window
Thanks for downloading
Try and customize the app locally
Extract the zip file and run the project like any Ionic app. Make sure to have Ionic CLI installed and open the terminal in the app root folder.
Step 1. Run in root folder
$ npm install
Step 2. Start the app
$ ionic serve
Let us know if we can help and enjoy!
Need to update your password?
Enter a new password and hit the button below to change it!
You are setting a password for the account
Need to update your password?
Your password has been changed!
Thanks for downloading
Customize demos locally
Everything is set up so that you can dig in right away and start exploring.
We have set up a trial so that you can try the demos locally.
Extract the zip file and open the demo in your favorite browser.
To install Mobiscroll in your project
follow instructions from this page .
Let us know if we can help and enjoy! 👍
Thanks for downloading
Customize demos locally
Please extract the zip file and run the project like any Angular CLI app.
Make sure to have the Angular CLI installed.
For installation and usage, extract the zip file and open a terminal window and follow these steps.
Step 1. Run in root folder
$ npm install
Step 2. Start the app
$ ng serve --open
Let us know if we can help and enjoy! 👍
Thanks for downloading
Customize demos locally
Everything is set up so that you can dig in right away and start exploring.
We have set up a trial so that you can try the demos locally.
The easiest way to get started is to follow the installation steps and by
grabbing the code directly from the demo page. Let us know if we can help and enjoy! 👍
You'll find a fully functional Kitchen-sink Ionic app in the zip file.
Thanks for downloading
Customize demos locally
Everything is set up so that you can dig in right away and start exploring.
We have set up a trial so that you can try the demos locally.
The demos are using Babel's in-browser ES6 and JSX transformer.
Extract the zip file and open the demo in your browser. To install Mobiscroll in your project
follow instructions from this page .
Let us know if we can help and enjoy! 👍