Restringir caracteres en el campo de entrada

¿Hay alguna opción para usar este código sin mostrar las letras o caracteres cuando el usuario escribe en los campos de entrada? Este es el código que ya probé y quiero mantenerlo, pero ahora, cuando escribo caracteres restringidos en la entrada, los muestra por un segundo. Necesito mantener la entrada en blanco

EDITAR: no quiero cambiar el código porque esto funciona muy bien en tabletas (otras funciones de restricción de caracteres no lo hacen). El único problema es ese retraso cuando presiona caracteres restringidos

Código:

function checkInput(ob){
    var invalidChars = /[^0-9]/gi
            if(invalidChars.test(ob.value)) {
                    ob.value = ob.value.replace(invalidChars,"");
          }
};

HTML:

<input class="input" maxlength="1" onChange="checkInput(this)" onKeyup="checkInput(this)" type="text" autocomplete="off"/>

Respuestas a la pregunta(5)

Su respuesta a la pregunta