Gracias a todos por vuestra ayuda. Pero la solución que más se aproxima a lo que yo buscaba es la de programeitor.
Y además, solucioné el fallo que comentaba programeitor.
Por si alguien la necesita, ahí va:
Código HTML:
<script>
function mira(esto)
{
var e=esto.value;
var l=e.length;
// Aquí lo que hago es añadir un 0 antes de las horas con un solo digito
// para que el usuario no tenga que escribirlo siempre. Y en mi caso la
// unica hora de 1 digito es la de las 9.
if (l==1)
{
if (e==9)
{
e="0"+e.charAt(0);
}
}
if(l==3)
{
// Aquí compruebo si la tecla pulsada es la de retroceso. Y así ya borra
// perfectamente
if (event.keyCode == 8)
e= (e.substring(0,2)+":");
else
e=(e.substring(0,2)+":"+e.charAt(2));
}
if(l>4)
e=e.substring(0,5);
esto.value=e;
}
</script>
Un saludo