Разрешаем только ввод цифр в поле input
Часто возникает задача запрета ввода не цифровых значений в поле <input>. В этом материале разберем реализацию данного механизма на JavaScript.
На мой взгляд, самый простой способ воспользоваться обработчиком события .keydown() - в jQuery или прослушивать событие keydown. Итак, предположим у нас есть текстовое поле с id = «only_num».
<input type="text" id="only_num" value="" />
Алгоритм проверки будет такой
- При нажатии клавиши на клавиатуре ( событие .keydown() ) будем получать keyCode (возвращает код нажатой клавиши) и анализировать его;
- Для цифр основной клавиатуры keyCode принимает значения от 48 (клавиша 0) до 57 (клавиша 9);
- Для цифр дополнительной клавиатуры ( Num-клавиатуры ) keyCode принимает значения от 96 (клавиша 0) до 105 (клавиша 9);
- Так же разрешим:
- удалять символы ( клавиша Del ) keyCode == 46;
- переключаться клавишей Tab между полями keyCode == 9;
- нажимать Backspace keyCode == 8;
- нажимать Esc keyCode == 27;
- выделять текст сочетанием Ctrl + A — вот тут клавиша A имеет код keyCode == 65, а событие зажатого Ctrl ctrlKey должно быть строго истина, т.е. получаем условие — ( event.keyCode == 65 && event.ctrlKey === true );
- разрешим клавишу Home keyCode == 36;
- разрешим клавишу End keyCode == 35;
- разрешим клавишу влево keyCode == 37;
- разрешим клавишу вправо keyCode == 39;
Последние четыре требования можно объединить в одно — ( event.keyCode >= 35 && event.keyCode <= 39 ), правда в этом случае мы разрешаем еще нажатие клавиши вверх keyCode == 38, но, думаю это не критично, а код получится красивее.
Разрешаем ввод только цифр в поле input на JavaScript
const input = document.getElementById('only_num');
input.addEventListener('keydown', function(event) {
// Разрешаем: backspace, delete, tab и escape
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 ||
// Разрешаем: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Разрешаем: home, end, влево, вправо
(event.keyCode >= 35 && event.keyCode <= 39)) {
// Ничего не делаем
return;
} else {
// Запрещаем все, кроме цифр на основной клавиатуре, а так же Num-клавиатуре
if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
});
Разрешаем ввод только цифр в поле input на jQuery
$(document).ready(function() {
$("#only_num").keydown(function(event) {
// Разрешаем: backspace, delete, tab и escape
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 ||
// Разрешаем: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Разрешаем: home, end, влево, вправо
(event.keyCode >= 35 && event.keyCode <= 39)) {
// Ничего не делаем
return;
} else {
// Запрещаем все, кроме цифр на основной клавиатуре, а так же Num-клавиатуре
if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
});
});
Помощь сайту
ЮMoney:
4100 1180 7209 833
Карта Сбербанк:
2202 2080 6183 7127
Перестаньте всё превращать в массивы (и работайте меньше)
Методы массивов в JavaScript: Исчерпывающий гид для разработчиков
Чистый код на JavaScript, 5 рекомендаций которые улучшат Ваш код.
Обработка ошибок в JavaScript. 10 примеров использования конструкции try...catch
Семь необходимых операторов RxJS
Зачем нам нужен TypeScript?
Как исправить ошибку «RangeError: Invalid time value» при вызове метода toISOString даты JavaScript?
Повышение уровня мастерства в JavaScript ES6
Введение в прототипы JavaScript
Сравнение методов require() и import() в JavaScript
Javascript array шпаргалка
Вырезаем изображение с помощью jQuery и PHP
Каррирование в JavaScript
Использование HTML5-элемента audio в JavaScript
Склонение окончаний в словах на Javascript
JavaScript - отслеживание изменения ориентации на мобильных устройствах
Четыре способа плавного скролла до элемента на JavaScript
Разрешаем только ввод цифр в поле input
Вывод последнего дня текущего месяца на Javascript
Понимание синхронного и асинхронного JavaScript с Async/Await
Youtube несколько видео на странице и стоп проигрывания предыдущего видео.
Семь важных функций JavaScript
Что такое ECMAScript и чем это отличается от JavaScript
Контекст выполнения функции в JavaScript
Область видимости в JavaScript
Замыкания в JavaScript
This в JavaScript
Объекты в JavaScript
Определение платформы устройства на javascript
Управление версиями Node.js с помощью nvm в Windows
Три способа понять промисы
Выделяем текущий пункт меню отдельным стилем на jQuery
Восемь типов данных и typeof
Собственные социальные share-кнопки
Как проверить с помощью jQuery и Javascript состояние checkbox
Велосипеды на Javascript и jQuery
Видео самоучитель jQuery от Envato
AJAX и JavaScript. Загрузка контента без перезагрузки страницы
Плавная кнопка "Наверх" на jQuery
Как отключить ввод текста по переключателю disabled
Как избежать повторной загрузки контента Jquery + Ajax + JSON
JavaScript and JQuery 1.8.3 решение проблемы с функцией attr() на примере генератора пароля
Возможно, вам будет интересно
Повышение уровня мастерства в JavaScript ES6
Принципы, о которых пойдет речь, являются фундаментальными для этого языка и будут оставаться таковыми независимо от того, какой фреймворк вы используете. Более того, понимание этих концепций окажется бесценным бонусом, когда вы решите изучить или использовать какую-либо популярную библиотеку или фреймворк из арсенала JavaScript.
Контекст выполнения функции в JavaScript
Контекст выполнения функции — это одно из фундаментальных понятий в JavaScript. Контекстом еще часто называют значение переменной this внутри функции. Также иногда путают понятия «контекст выполнения» и «область видимости» — это не одно и то же.
Выделяем текущий пункт меню отдельным стилем на jQuery
Допустим нужно выделить текущий пункт меню отдельным стилем. Иногда, это сделать просто невозможно (в случае Ajax) или сложно из-за структуры меню и тут нам на помощь приходит JavaScript, а точнее jQuery
Велосипеды на Javascript и jQuery
В очередной раз открыв код коллег и ужаснувшись, я решил написать эту статью. Надеюсь для кого-нибудь это будет полезным, заодно и мне будет проще новичкам объяснять что у них в коде не так, просто кинув ссылку на эту статью.