Date and Time Picker
Basic
Date time picker is powered by flatpickr.js that 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
<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
<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
<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
<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 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); });
© 2021 DesignReset
Coded with
Alan Green
Lead Developer
Todo
Launch New Seo Wordpress Theme has been moved to Completed Board by Alma Clark
New Task is added by Ernest Reeves
Dinner with Kelly Young has been moved to Completed Board by Dale Butler
Event Notifications
New Event has been added on 15 Dec 2020
Collect documents from Kelly at the restaurant tommorrow.
Meeting Event on 12 Nov has been updated to 8 PM
New Event Seminar organised by Design Reset will be held on 25 January
Today's Conference is Cancelled.
Meeting with Project Lead on 01 Jan has been updated to 15 Jan