Для админки возникла задача – сделать удобным ввод ip-адресов.
Существующие плагины не устраивали тем, что они либо не точно проверяли формат и позволяли вводить ip типа 264.734.443.332, или не умели сами ставить разделители, или при вводе октета большего чем 255 уменьшали до наименьшего, т.е. при вводе 665 вместо того, чтобы поставить разделитель точку после 66, т.е. сделать 66.5 уменьшали до 255, т.е. никакого удобства.
В итоге появилось желание сделать плагин, который бы позволял вводить только цифры, а разделители точки устанавливались бы сами на нужных местах, когда это возможно.
Это мой первый плагин, опыта создания не было, решил переделать существующий похожий плагин.
Чтобы не городить кучу условий условий и исключений для проверки ввода символов, было принято решение проверять введенную строку по регулярному выражению. Если каждый введенный символ соответствовал, отлично. Если нет, то пробуем этот символ с разделителем.
Одно регулярное выражение проверяет полную строку ip-адреса, другое проверяет строку может ли она являться частью ip-адреса.
В итоге код получился небольшим и главную функцию плагин выполняет.
Если кому-то понадобится
пример работы плагина (обновлен)
Из того, что можно было бы сделать:
Конечно было бы плюсом ввод ip.v6, причем с поддержкой сокращенной формы, думаю сделать это, как только это понадобится в нашей админке.
Может стоит для удобства ввод разделителя кроме точки сделать пробелом и запятой для удобства.
Так же было бы здорово подсвечивать форматирование, если не введен адрес, например выставить разделители, но я честно не знаю как это правильно делать. Можно placeholder устанавливать, но это по желанию каждый сможет сделать сам…
Source: http://habrahabr.ru/post/186690/