Jaki jest właściwy sposób filtrowania wartości liczbowych w polu tekstowym?
Pracuję nad polem tekstowym działającym z walidacją, która nie pozwala na wprowadzanie innych wartości niż liczbowe. Tak więc mój początkowy kod wyglądał na dość prosty i podobny do tego:
$(textField).onKeyPress(function(e) {
if (e.which < 48 && e.which > 57)
e.preventDefault();
});
Jest to dość oczywiste, ale okazuje się, że (w najnowszej wersji wszystkich przeglądarek) Firefox sprawi, że to również uniemożliwi ruch za pomocą klawiszy strzałek i klawiszy usuwania / cofania, podczas gdy inne przeglądarki nie.
Rozejrzałem się, że muszę także sprawdzić te klucze i sprawdzić różne właściwości wystawione we
odwołanie do wydarzenia.
Mój ostatni kod wygląda mniej więcej tak:
$(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();
});
Jednak wydaje się, że jest to zbyt wiele, aby rozwiązać dość prosty problem, po prostu zapobiegając nieliczbowym.
Co ja robię źle? Jaka jest najlepsza praktyka w zakresie tego rodzaju walidacji?