Как правильно фильтровать числовые значения для текстового поля?

Я работаю над текстовым полем, работающим с таким типом проверки, который не позволит вам вводить кроме числовых значений. Поэтому мой исходный код выглядел довольно просто и примерно так:

$(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();
});

Однако, это кажется слишком большим, чтобы решить довольно простую задачу, а именно предотвращение нечисловых.

Что я делаю не так? Какова наилучшая практика с точки зрения такого рода проверки?

Ответы на вопрос(3)

Ваш ответ на вопрос