Группировка элементов формы — инпуты
Иногда бывает, что нужно заставить несколько текстовых полей вести себя как одно целое. Например, это удобно при вводе номера кредитной карты.
Задача
Сделать удобный для пользователя ввод чисел в группу объединенных по смыслу полей, включая автоматический переход курсора на следующее поле и разбивку по полям при вставке значения из буфера обмена.
Решение
Нам поможет плагин jQuery Group Inputs.
Проверено в:
- IE 7+
- Firefox
- Opera
- Chrome
- Safari
Что качать?
библиотеку jquery качаем или подключаем из хранилища.
Быстрый старт
Подключаем библиотеки:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script src="js/jquery.plugins.js"></script>
Создаем HTML формы. Всем инпутам прописываем общий класс (для вызова плагина). Так как подразумевается ввод номера кредитной карточки, устанавливаем autocomplete=»off»
<form action="#" method="post"> <input type="text" value="" id="Number1" autocomplete="off" maxlength="4" class="NumGroup"> <input type="text" value="" id="Number2" autocomplete="off" maxlength="4" class="NumGroup"> <input type="text" value="" id="Number3" autocomplete="off" maxlength="4" class="NumGroup"> <input type="text" value="" id="Number4" autocomplete="off" maxlength="4" class="NumGroup"> </form>
Последний шаг — инициализируем плагин:
<script type="text/javascript">
$(function()
{
$('.NumGroup').groupinputs();
});
</script>
Ввод только цифр
Для запрета ввоба любых символов, кроме цифр можно воспользоваться плагином jCaret.
Тогда инициализация будет выглядеть так:
$(function(){
$('.NumGroup').groupinputs();
$('.NumGroup').on('input propertychange', function(e) {
var elem = $(e.target),
value = elem.val(),
caret = elem.caret(),
newValue = value.replace(/[^0-9]/g, ''),
valueDiff = value.length - newValue.length;
if (valueDiff) {
elem
.val(newValue)
.caret(caret.start - valueDiff, caret.end - valueDiff);
}
});
});
Плюсы:
- перемещает курсор на следующий инпут, когда заканчивается место в текущем;
- для перехода между инпутами можно пользоваться клавишами со стрелками;
- автоматически распределяет текст при вставке из буфера обмена.
Минус:
- Несколько неудобно реализовано редактирование текста вручную.
