Si queremos que en un input de tipo texto solo se puedan escribir números por diferentes circunstancias, la forma más efectiva de hacerlo es bloquear todas las teclas que no sean números, así no dejamos margen a la introducción de caracteres que no nos interesen.

En este caso he elaborado un plugin jQuery que bloquea todas las teclas excepto números, punto y coma. Además de algunas teclas de control como las de desplazamiento, el espacio o el borrar.

Esta es la primera parte del ejemplo, el propio plugin en jQuery, que en este caso he llamado onlynums.

<script>
(function ($){
  jQuery.fn.onlynums = function() {

      var permitidos = [48,49,50,51,52,53,54,55,56,57,188,190,96,97,98,99,100,101,102,103,104,105,110];

      //Controls
      permitidos.push(8); //Tecla borrar
      permitidos.push(32); //Tecla espacio
      permitidos.push(39); //Tecla flecha izq
      permitidos.push(37); //Tecla flecha drc

      $(this).keydown(function(event){

        if($.inArray(event.which, permitidos) == -1){

         return false;

        }

      });

  };
})(jQuery);//End function.
</script>

Seleccionaremos el input de tipo texto que nos interese vía Id, Clase o Tag Html, y llamaremos al plugin jQuery onlynums.

<script>
$( document ).ready(function() {

	$('#telefono').onlynums();

});
</script>

A partir de ese momento, en nuestro input de tipo texto solo podremos escribir números, comas o puntos.

<input type="text" id="telefono">
Código en vivo

Si te ha sido de utilidad ¡deja un comentario! 🙂