como puedes ver, el "chiste" de la función es permitir cualquiera de los cígos de tecla definidos en
if ((charCode < 48 || charCode > 57) && charCode != 46), para permitir el guion hay que agregar el código 45. Y para que no quede vacio hay que preguntar si la logitud del value sea mayor a cero.
mmmmm, pero igual, alguien te puede ingresar una barbaridad, lo mejor sería usar una
expresión regular o bien validar el valor con formato, eso último lo puedes ver en esta
FAQ
Saludos