Мои скромные познания в JS вылелись в вот это вот 

Напомню - вводим тольцко цифры.
function autofocus(next,prev, e){
	evt = (e)? e: event;
	var elem = (evt.target) ? evt.target : evt.srcElement;
	var key = evt.keyCode;
	var limit = elem.maxLength;
	
	if(((key>=48) && (key<=57)) || ((key>=96) && (key<=105)) || (key==8) || (key>=37 && key<=40))
	{
		if(key==8 && prev)
		{
			if(elem.value.length==0)
			{
				elem.form.elements[prev].focus();
				elem.form.elements[prev].select();				
			}
		}
		if (((key>=48) && (key<=57)) || ((key>=96) && (key<=105)) && (elem.value.length==limit) && next)
		{
			elem.form.elements[next].focus();
			elem.form.elements[next].select();
		}
		
	}
	else
	{
		elem.value=parseInt(elem.value);
		if(isNaN(elem.value))
		{
			elem.value="";
		}
	}
}
 Вот еще бы при возвращении коретку помещать в конец инпута, вместо выделения всего текста.