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:true
and 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:range
select the date with range.
var f3 = flatpickr(document.getElementById('rangeCalendarFlatpickr'),{mode:"range"});
Preloading Time
Use noCalendar:true
with 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 ============= 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 ============= // 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 updating function 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 silders noUiSlider.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 together function 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)});