el tema es viejo pero esta es una solución simplificada basada en las soluciones de arriba, lo probe en FF3 y IE6 y funcionó
Código:
function numeros(obj, e){
opc = false;
tecla = (document.all) ? event.keyCode : e.which;
if (tecla == 0) {opc = true;} // permitir las teclas de funciones F1, F2, Insert, etc.
if (tecla == 8) {opc = true;} // tecla backspace
if (tecla == 13) {evento_enter()} // tecla enter (ver nota)
if (tecla >= 48 && tecla <= 57) {opc = true;} // sólo numeros
return opc;
}
function evento_enter() {
return false;
}
y el input
Código:
<input type="text" onKeyPress="return numeros(this, event);">
NOTA: Puedes omitir la linea de la tecla 13 para que enter no haga nada (entiendase no enviar el formulario) o utilizarla para que llame una funcion sin necesidad de enviar el formulario.
De la misma manera puedes agregar o quitar teclas permitidas solo consiguete una tabla ASCII y guiate por allí.
En el ejemplo la funcion evento_enter() no hace absolutamente nada pero entienden la idea.