This version validates any user entered number and you can hold down the mouse key on the up/down arrows to scroll the box values up or down.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title></title>
<style type="text/css">
#hrsCont {
width: 70px;
}
#hrsCont textarea {
overflow: hidden;
}
.btnScrollHrs {
clear: both;
float: right;
}
</style>
<script type="text/javascript">
var maxHrs = 24;
var minHrs = 1;
var timer;
var speed = 500; //milliseconds between scroll values
function scrollHrs(dir){
txtHoursO.value = validateHrs(Number(txtHoursO.value) + dir);
timer = setTimeout(function(){scrollHrs(dir);},speed);
}
function validateHrs(hrs) {
if(hrs > maxHrs) {hrs = maxHrs;}
if(hrs < minHrs) {hrs = minHrs;}
return hrs;
}
window.onload=function(){
txtHoursO = document.getElementById('txtHours');
txtHoursO.value = minHrs;
txtHoursO.onkeyup=function(){
var regex = /^[0-9]*$/;
if(!regex.test(this.value)){
this.value = this.value.substring(0,this.value.length-1);
return;
}
this.value = validateHrs(Number(txtHoursO.value));
}
var btnScrollHrsO = document.getElementsByClassName('btnScrollHrs');
btnScrollHrsO[0].onmousedown = function(){scrollHrs(1); return true;}
btnScrollHrsO[1].onmousedown = function(){scrollHrs(-1); return true;}
btnScrollHrsO[0].onmouseup = btnScrollHrsO[1].onmouseup = function(){clearTimeout(timer); return true;}
btnScrollHrsO[0].onclick = btnScrollHrsO[1].onclick = function(){return false;}
}
</script>
</head>
<body>
<form action="" method="post">
<p>
Hold down the left mouse key on either the up or down arrow to scroll values up or down<br />
or enter a number directly in the box.
</p>
<fieldset id="hrsCont">
<textarea name="txtHours" id="txtHours" cols="2" rows="1"></textarea>
<button class="btnScrollHrs">^</button>
<button class="btnScrollHrs">v</button>
</fieldset>
</form>
</body>
</html>
Bookmarks