@ElJavista,
dejando a un lado algunos detalles que has obviado ... veamos a ver si te agrada mas esta forma. la expresion dice exactamente lo mismo que has escrito en el condicional de if. no hace falta que me lo digas, ya se cual sera tu respuesta.
Código:
function entero(evt){
if(/[^0-9`-i#-'\x08\t\n\r\.]/.test(String.fromCharCode(evt.keyCode))) evt.preventDefault();
}
ahora bien, ese ejemplo en particular no deberia usarlo con keydown, creo que incluyendo tu solucion. prueba a ver que sucede si tipeas los caracteres alternos a las teclas numericas; o sea, los simbolos
! hasta
). la razon es porque keyCode adquiere el mismo valor en una tecla que puede representar dos o mas caracteres. por ejemplo la tecla
2 -en el layout QWERTY español- contiene 3 caracteres (2, ", @) y en keydown (al igual que keyup), keyCode contiene el valor 50.