Плагин Для Маскировки Ввода Номера Во Входе

Часто стоит задача ограничить возможность ввода букв в поле ввода.

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

  
   

return ((event.keyCode>47)&&(event.keyCode<58))

Этот метод имеет ряд недостатков, например, пользователь не сможет вводить цифры на цифровой клавиатуре, в Opera не будут работать клавиши табуляции, вверх, влево и т. д. Как это сделать правильно? Но есть и хорошие идеи, модификация которых позволяет добиться желаемого результата.



function testKey(e) { // Make sure to use event.charCode if available var key = (typeof e.charCode == 'undefined' ? e.keyCode : e.charCode); // Ignore special keys if (e.ctrlKey || e.altKey || key < 32) return true; key = String.fromCharCode(key); return /\d/.

test(key); }

Я решил написать плагин jQuery на основе этого кода.

Но чтобы не изобретать велосипед, я решил поискать готовые плагины и нашел один.

digitalbush.com/projects/masked-input-plugin .

Действительно замечательный плагин, но мне нужно было иметь возможность задавать условия, чтобы поле было целыми или дробными числами.

Итак, какие задачи я перед собой поставил:

  1. Установите тип «float», «int» или регулярное выражение.

  2. Установите разделитель типа «float».

  3. Установите количество символов до и после разделителя.

  4. Значение по умолчанию, если пользователь ввел значение через контекстное меню.

Как говорилось ранее, при нажатии клавиши я преобразовывал код в символ, проверял через регулярное выражение.

Остаётся только предусмотреть случай, если пользователь вставил значение через контекстное меню; для этого я прикрепил к событиям размытия обработчик, в котором проверял нужное нам регулярное выражение.

Однако когда я начал все проверять, то заметил, выделял ли пользователь какую-то часть текста во Вводе мышкой.

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

Источники на github И демо Использованные книги:

  1. habrahabr.ru/blogs/javascript/55922 .

  2. xpoint.ru/know-how/JavaScript/PoleznyieFunktsii?38#Fil 'трВводаДляТекстовогоПоля
Теги: #маска ввода #jQuery #JavaScript #текстовый диапазон #jQuery
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.