Wie können numerische Werte für ein Textfeld richtig gefiltert werden?

Ich arbeite an einem Textfeld, das mit einer Validierung arbeitet, bei der Sie nur numerische Werte eingeben können. Aus diesem Grund sah mein ursprünglicher Code ziemlich einfach und ähnlich aus:

$(textField).onKeyPress(function(e) {
    if (e.which < 48 && e.which > 57)
        e.preventDefault();
});

Dies ist recht einfach, aber es stellt sich heraus, dass Firefox (in der neuesten Version aller Browser) auch Bewegungen mit den Pfeiltasten und den Lösch- / Rücktasten verhindert, während dies bei den anderen Browsern nicht der Fall ist.

Als ich mich umsah, stellte ich fest, dass ich auch nach diesen Schlüsseln suchen und nach verschiedenen Eigenschaften suchen musste, die in dere Ereignisreferenz.

Mein endgültiger Code sieht ungefähr so ​​aus:

$(textField).onKeyPress(function(e) {
    var code = e.which || e.keyCode;
    if (code > 31  // is not a control key
        && (code < 37 || code > 40) // is not an arrow key
        && (code < 48 || code > 57) // is not numeric
        && (code != 46) // is not the delete key
    )
        e.preventDefault();
});

Dies scheint jedoch zu viel zu sein, um ein relativ einfaches Problem zu lösen, da es nur das Vermeiden von nicht numerischen Werten betrifft.

Was mache ich falsch? Welches ist die beste Vorgehensweise im Hinblick auf diese Art der Validierung?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage