IntlPhoneMask

EN - RU

IntlPhoneMask 🌍

Ultra-lightweight Vanilla JavaScript library for international phone inputs with automatic flag detection, masking, and validation.

πŸš€ Open Live Demo

IntlPhoneMask Preview


ENGLISH

Overview

IntlPhoneMask is a high-performance, dependency-free alternative to intl-tel-input focused on modern UX and minimal bundle size. It supports automatic country detection by dial code, smart masking, real-time validation, and a fully customizable UI.

Features


Installation

You can include the compiled files directly via <link> and <script>.

<link rel="stylesheet" href="intl-phone-mask.css">
<script src="intl-phone-mask.min.js"></script>

Basic Usage

1. HTML

Use a regular input field and an optional element for validation status.

<input type="text" id="phone" placeholder="Enter phone number">
<div id="status"></div>

2. Initialization

Call IntlPhoneMask.init with a CSS selector and options.

IntlPhoneMask.init('#phone', {
  lang: 'en',          // 'en' or 'ru'
  fixedWidth: true,    // optional: fix dropdown width to 350px
  statusSelector: '#status' // optional: selector for validation text
});

You can pass any CSS selector (class, id, or attribute) and multiple inputs will be initialized if they match.


Configuration

Option Type Default Description
lang string 'ru' UI language, supports 'en' and 'ru'.
fixedWidth boolean false If true, country list width is fixed to 350px.
statusSelector string null CSS selector for an element that shows status text.

Validation States

IntlPhoneMask automatically toggles CSS classes on the input depending on mask completeness.

Status text (e.g., β€œValid”, β€œIncomplete”, β€œWaiting…”) is localized according to the lang option and shown in the statusSelector element if configured.


Styling

Core layout and visual styles are controlled by CSS classes such as:

You can override these classes in your own stylesheet to fully match your design system.


License

IntlPhoneMask is distributed under the GNU GPL-3.0 license. You must keep the license text and notices in derivative works.


Contributing


Performance Notes



Π Π£Π‘Π‘ΠšΠ˜Π™

ΠžΠ±Π·ΠΎΡ€

IntlPhoneMask β€” это Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° чистом JavaScript для Π²Π²ΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² с автоматичСским ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ страны, маской ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠ΅ΠΉ. Она создана ΠΊΠ°ΠΊ лёгкая Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° intl-tel-input с соврСмСнным интСрфСйсом ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π±Π°Π½Π΄Π»Π°.

πŸš€ ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²

ВозмоТности


Установка

Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Π½Π° страницу ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‡Π΅Ρ€Π΅Π· <link> ΠΈ <script>.

<link rel="stylesheet" href="intl-phone-mask.css">
<script src="intl-phone-mask.min.js"></script>

Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС

1. HTML

ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ для статуса Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ.

<input type="text" id="phone" placeholder="Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°">
<div id="status"></div>

2. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ IntlPhoneMask.init с CSS-сСлСктором ΠΈ опциями.

IntlPhoneMask.init('#phone', {
  lang: 'ru',          // 'ru' ΠΈΠ»ΠΈ 'en'
  fixedWidth: true,    // опция: фиксированная ΡˆΠΈΡ€ΠΈΠ½Π° списка (350px)
  statusSelector: '#status' // опция: элСмСнт для тСкста статуса
});

МоТно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ любой CSS-сСлСктор; всС подходящиС ΠΈΠ½ΠΏΡƒΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ОписаниС
lang string 'ru' Π―Π·Ρ‹ΠΊ интСрфСйса: 'en' ΠΈΠ»ΠΈ 'ru.
fixedWidth boolean false Если true, список стран ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ 350px.
statusSelector string null CSS-сСлСктор элСмСнта для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ.

Бостояния Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° автоматичСски ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ CSS-классы Π½Π° ΠΈΠ½ΠΏΡƒΡ‚Π΅ Π² зависимости ΠΎΡ‚ Π΄Π»ΠΈΠ½Ρ‹ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ маски.

ВСкст статуса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΒ», «НСполный Π½ΠΎΠΌΠ΅Ρ€Β», Β«ΠžΠΆΠΈΠ΄Π°Π½ΠΈΠ΅β€¦Β») отобраТаСтся Π² элСмСнтС statusSelector ΠΈ локализуСтся ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ lang.


Бтилизация

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ классы вёрстки ΠΈ стилСй:

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠΉΡ‚Π΅ эти классы Π² своём CSS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.


ЛицСнзия

IntlPhoneMask распространяСтся ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GNU GPL-3.0. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ тСкста Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ распространСнии.


Π’ΠΊΠ»Π°Π΄ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚


Π—Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ