Date and Time Picker

Basic

Date time picker is powered by flatpickr.jsthat gives the ability to user to select date or time.

var f1 = flatpickr(document.getElementById('basicFlatpickr'));

Date Time

Use enableTime: trueand dateFormat: "Y-m-d H:i"option to enable time support

var f2 = flatpickr(document.getElementById('dateTimeFlatpickr'), {    enableTime: true,    dateFormat: "Y-m-d H:i",});

Range Calendar

Use mode: rangeselect the date with range.

var f3 = flatpickr(document.getElementById('rangeCalendarFlatpickr'), {    mode: "range"});

Preloading Time

Use noCalendar: truewith Date Time options to disable calendar and show time picker only.

var f4 = flatpickr(document.getElementById('timeFlatpickr'), {    enableTime: true,    noCalendar: true,    dateFormat: "H:i",    defaultDate: "13:45"});

Javascript Range Slider

Postion : Top-Left

0%
<div class="custom-progress progress-up" style="width: 100%">    <div class="range-count"><span class="range-count-number" data-rangecountnumber="0">0</span> <span class="range-count-unit">%</span></div>    <input type="range" min="0" max="100" class="custom-range progress-range-counter" value="0"></div>

Postion : Top-Right

0%
<div class="custom-progress top-right progress-up" style="width: 100%">    <div class="range-count"><span class="range-count-number" data-rangecountnumber="0">0</span> <span class="range-count-unit">%</span></div>    <input type="range" min="0" max="100" class="custom-range progress-range-counter" value="0"></div>

Postion : Bottom-Left

0%
<div class="custom-progress progress-down" style="width: 100%">    <input type="range" min="0" max="100" class="custom-range progress-range-counter" value="0">    <div class="range-count"><span class="range-count-number" data-rangecountnumber="0">0</span> <span class="range-count-unit">%</span></div></div>

Postion : Bottom-Right

0%
<div class="custom-progress bottom-right progress-down" style="width: 100%">    <input type="range" min="0" max="100" class="custom-range progress-range-counter" value="0">    <div class="range-count"><span class="range-count-number" data-rangecountnumber="0">0</span> <span class="range-count-unit">%</span></div></div>

noUI Slider

Using HTML5 input elements


=============    HTML=============<div class="container">    <div id="html5"></div>    <br/>    <div class="row mt-4 mb-4">        <div class="col-lg-6 mb-3">            <select id="input-select" class="form-control"></select>        </div>        <div class="col-lg-6">            <input type="number" class="form-control" min="-20" max="40" step="1" id="input-number">        </div>    </div></div>
=============   Javascript=============    var html5Slider = document.getElementById('html5');noUiSlider.create(html5Slider, {    start: [ 10, 30 ],    connect: true,    tooltips: true,    range: {        'min': -20,        'max': 40    }});

Non linear slider


=============    HTML=============<div class="container">    <div id="nonlinear"></div>    <br/>    <div class="row mt-4 mb-4">         <div class="col-lg-6">             <span class="example-val" id="lower-value"></span>         </div>         <div class="col-lg-6 text-right">             <span class="example-val" id="upper-value"></span>         </div>    </div></div>
=============   Javascript=============    /*--------Non linear slider----------*/var nonLinearSlider = document.getElementById('nonlinear');noUiSlider.create(nonLinearSlider, {    connect: true,    behaviour: 'tap',    tooltips: true,    start: [ 500, 4000 ],    range: {        // Starting at 500, step the value by 500,        // until 4000 is reached. From there, step by 1000.        'min': [ 0 ],        '10%': [ 500, 500 ],        '50%': [ 4000, 1000 ],        'max': [ 10000 ]    }});var nodes = [    document.getElementById('lower-value'), // 0    document.getElementById('upper-value')  // 1];// Display the slider value and how far the handle moved// from the left edge of the slider.nonLinearSlider.noUiSlider.on('update', function ( values, handle, unencoded, isTap, positions ) {    nodes[handle].innerHTML = values[handle] + ' <span class="precentage-val">' + positions[handle].toFixed(2) + '% </span>';});

Locking sliders together


=============    HTML=============<div class="container">    <div class="row mb-4">        <div class="col-lg-12 mb-5">            <div id="slider1"></div>            <span class="example-val mt-4 d-inline-block" id="slider1-span"></span>        </div>    </div>    <br/>    <div class="row mb-0">        <div class="col-lg-12 mb-5">            <div id="slider2"></div>            <span class="example-val mt-4 d-inline-block" id="slider2-span"></span>        </div>    </div>    <div class="row">                                                      <div class="col-lg-12">            <button id="lockbutton" class="btn btn-primary mb-4" style="float: right; margin: 20px 0 0;">lock</button>        </div>    </div></div>
=============   Javascript=============    /*-----Locking sliders together-----*/// setting up button clicks// Store the locked state and slider values.var lockedState = false,    lockedSlider = false,    lockedValues = [60, 80],    slider1 = document.getElementById('slider1'),    slider2 = document.getElementById('slider2'),    lockButton = document.getElementById('lockbutton'),    slider1Value = document.getElementById('slider1-span'),    slider2Value = document.getElementById('slider2-span');// When the button is clicked, the locked// state is inverted.lockButton.addEventListener('click', function(){    lockedState = !lockedState;    this.textContent = lockedState ? 'unlock' : 'lock';});// cross updatingfunction crossUpdate ( value, slider ) {    // If the sliders aren't interlocked, don't    // cross-update.    if ( !lockedState ) return;    // Select whether to increase or decrease    // the other slider value.    var a = slider1 === slider ? 0 : 1, b = a ? 0 : 1;    // Offset the slider value.    value -= lockedValues[b] - lockedValues[a];    // Set the value    slider.noUiSlider.set(value);}// initializing sildersnoUiSlider.create(slider1, {    start: 60,    // Disable animation on value-setting,    // so the sliders respond immediately.    animate: false,    tooltips: true,    range: {        min: 50,        max: 100    }});noUiSlider.create(slider2, {    start: 80,    animate: false,    tooltips: true,    range: {        min: 50,        max: 100    }});slider1.noUiSlider.on('update', function( values, handle ){    slider1Value.innerHTML = values[handle];});slider2.noUiSlider.on('update', function( values, handle ){    slider2Value.innerHTML = values[handle];});// linking sliders togetherfunction setLockedValues ( ) {    lockedValues = [        Number(slider1.noUiSlider.get()),        Number(slider2.noUiSlider.get())    ];}slider1.noUiSlider.on('change', setLockedValues);slider2.noUiSlider.on('change', setLockedValues);// The value will be send to the other slider,// using a custom function as the serialization// method. The function uses the global 'lockedState'// variable to decide whether the other slider is updated.slider1.noUiSlider.on('slide', function( values, handle ){    crossUpdate(values[handle], slider2);});