Q:

Function em onpaste

Eu tenho este input onde possuo uma function, apenas para aceitar números, digitando ela funciona, porém eu gostaria de colocar esta function no onpaste também, se eu faço colocando onpaste="return SomenteNumeros(event)", não dá certo. Não reconhece, ele deixa passar letras, pontos, vírgulas ,etc.
Seria necessário colocar no onpaste, para validar essas informações.

  function SomenteNumeros(event) {
        if (event.keyCode < 48 || event.keyCode > 57)
            return false;
    }
<input  class="form-control" maxlength="8" placeholder="Somente números." OnKeyPress="return SomenteNumeros(event)">
                        

A:

Use oninput no lugar de onkeypress enviando para a função o elemento como parâmetro através do this:
oninput="SomenteNumeros(this)"

A vantagem do oninput é que ele detecta qualquer alteração no campo, seja via mouse ou teclado, enquanto que o onkeypress só detecta o teclado.
E na função faça um .replace com uma expressão regular eliminando tudo o que não for número:
.replace(/[^\d]/g, '');

A expressão /[^\d]/g seleciona tudo que não é número (\d). Desta forma, mesmo colando, via mouse ou teclado, irá eliminar qualquer caractere não numérico.
Veja:

function SomenteNumeros(el) {
  el.value = el.value.replace(/[^\d]/g, '');
}
<input type="text" class="form-control" maxlength="8" placeholder="Somente números." oninput="SomenteNumeros(this)">

A:

Ou no onkeyup (mesmo que vc cole ele tratará):

//Permite Ponto
function somenteNumeros(num) {
  var er = /[^0-9.]/;
  er.lastIndex = 0;
  var campo = num;
  if (er.test(campo.value)) {
    campo.value = "";
  }
}


//Permite virgula
function somenteNumeros2(num) {
  var er = /[^0-9,]/;
  er.lastIndex = 0;
  var campo = num;
  if (er.test(campo.value)) {
    campo.value = "";
  }
}
<input type="text" class="form-control" id="tes" onkeyup="somenteNumeros(this);">

