Как правильно фильтровать числовые значения для текстового поля?
Я работаю над текстовым полем, работающим с таким типом проверки, который не позволит вам вводить кроме числовых значений. Поэтому мой исходный код выглядел довольно просто и примерно так:
$(textField).onKeyPress(function(e) {
if (e.which < 48 && e.which > 57)
e.preventDefault();
});
Это довольно просто, но, как оказалось, (в последней версии всех браузеров) Firefox сделает это, также предотвращая перемещение с помощью клавиш со стрелками и клавиш удаления / возврата, в отличие от других браузеров.
Посмотрев вокруг, я обнаружил, что мне нужно будет также проверить эти ключи и проверить различные свойства, представленные вe
ссылка на событие.
Мой окончательный код выглядит примерно так:
$(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();
});
Однако, это кажется слишком большим, чтобы решить довольно простую задачу, а именно предотвращение нечисловых.
Что я делаю не так? Какова наилучшая практика с точки зрения такого рода проверки?