JSFiddle - React, Tailwind, and code Playground
HTML
<input id="inputDate" value="2013-02-06" />
<hr />
<select id="selTime">
<option value="00:00:00">00:00</option>
<option value="01:00:00">01:00</option>
<option value="02:00:00">02:00</option>
<option value="03:00:00">03:00</option>
<option value="04:00:00">04:00</option>
<option value="05:00:00">05:00</option>
<option value="06:00:00">06:00</option>
<option value="07:00:00">07:00</option>
<option value="08:00:00">08:00</option>
<option value="09:00:00">09:00</option>
<option value="10:00:00" selected="selected">10:00</option>
<option value="11:00:00">11:00</option>
<option value="12:00:00">12:00</option>
<option value="13:00:00">13:00</option>
<option value="14:00:00">14:00</option>
<option value="15:00:00">15:00</option>
<option value="16:00:00">16:00</option>
<option value="17:00:00">17:00</option>
<option value="18:00:00">18:00</option>
<option value="19:00:00">19:00</option>
<option value="20:00:00">20:00</option>
<option value="21:00:00">21:00</option>
<option value="22:00:00">22:00</option>
<option value="23:00:00">23:00</option>
</select>
JavaScript
function padLeft(nr, n) {
return Array(n - String(nr).length + 1).join('0') + nr;
};
function wheel(event) {
event.preventDefault();
var oriDay = new Date(event.target.value);
var newDay;
if(event.detail > 0) {
//wheel down
newDay = new Date(oriDay.getTime() + 24 * 60 * 60 * 1000);
} else {
//wheel up
newDay = new Date(oriDay.getTime() - 24 * 60 * 60 * 1000);
}
event.target.value = newDay.getFullYear() + '-' + padLeft(newDay.getMonth() + 1, 2) + '-' + padLeft(newDay.getDate(), 2);
};
function wheelSelect(event) {
event.preventDefault();
var intMax = event.target.options.length - 1;
var intIndex = event.target.selectedIndex;
var intNextIndex = 0;
if(event.detail > 0) {
//wheel down
if((intIndex + 1) <= intMax) intNextIndex = intIndex + 1;
else intNextIndex = 0;
} else {
//wheel up
if((intIndex - 1) >= 0) intNextIndex = intIndex - 1;
else intNextIndex = intMax;
}
event.target.options[intNextIndex].selected = true;
};
document.getElementById('inputDate').addEventListener('DOMMouseScroll', wheel, false);
document.getElementById('selTime').addEventListener('DOMMouseScroll', wheelSelect, false);