quero impedir que o usuario digite qualquer coisa que nao seja numeros
Use o próprio input
do tipo number
do HTML
O <input type="number">
define um campo de entrada numérico .
Você também pode definir restrições sobre quais números são aceitos.
O exemplo a seguir exibe um campo de entrada numérico, onde você pode inserir um valor de 1 a 5:
<form>
<input type="number" name="quantity" min="1" max="5">
</form>
Restrições de Entrada
Aqui está uma lista de algumas restrições de entrada comuns (algumas são novas no HTML5):
disabled - Especifica que um campo de entrada deve ser desabilitado
max * - Especifica o valor máximo para um campo de entrada
maxlength - Especifica o número máximo de caracteres para um campo de entrada
min * - Especifica o valor mínimo para um campo de entrada
pattern * - Especifica uma expressão regular para verificar o valor de entrada
readonly - Especifica que um campo de entrada é somente leitura (não pode ser alterado)
required * - Especifica que um campo de entrada é obrigatório (deve ser preenchido)
size - Especifica a largura (em caracteres) de um campo de entrada
step * - Especifica os intervalos de número legais para um campo de entrada
value - Especifica o valor padrão para um campo de entrada
* = HTML5
Isso pode ser visto em: https://www.w3schools.com/html/html_form_input_types.asp
Esses inputs
atualmente vem com um spin button
para aumentar e reduzir o valor, caso queira desabilitar os mesmos, poderá fazer com CSS
:
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type=number] {
-moz-appearance:textfield;
}