Skip to content
This repository has been archived by the owner on Feb 1, 2021. It is now read-only.
/ EveradMask Public archive

Phone number formatting and validation for Everad Group usage.

Notifications You must be signed in to change notification settings

dnddone/EveradMask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EveradMask

Розрахунок йде на перше введеня номеру, а не на багаторазове редагування. Для коректного тесту, рекомендується перезавантажувати сторінку після кожного введення.

Сторінка - http://sa.valid.code.rcktprft.ru/

Для імітації різних країн - http://sa.valid.code.rcktprft.ru/?&country_code=RU

Форматує і визначає номери країн по:

  • коду країни +380, 380, 39 (Italy), 7, +39, +7...
  • коду оператора країни 050, 097, 812 (RU код оператора), 363 (IT код оператора), 912 (RU код оператора)...

Визначає номери лише для країн з випадаючого списку, які в свою чергу підтягуються з мов на сторінці на сервері (гео). Якщо не задана країна, то форматування для цієї країни не відслідковується, але завжди спрацює міжнародний формат хоча і буде сірий прапор.

Приорітет йде на:

  1. Код країни, де знаходиться користувач сайту.
  2. Код введеної країни в input (наприклад, українець вводить український номер в Росії 380 50 ...)
  3. Код оператора (363 - італійський оператор без коду країни Італії).

Логіка роботи при вводі "конфліктних" номерів. Ситуація, коли при вводі 777 є різні варіанти реалізації (7 - код Росії, 77 - грузинський оператор, 777 - казахстанський оператор): 7... - Має вибивати Росію для користувача з Росії. Якщо користувач продовжить вводити номер 777, то 77 та 777 номери ніколи не спрацюють і прапор не змінться, бо пріоритет за країною, звідки робиться замовлення. 77... - Має вибивати Грузію. Пропускає вибір прапору Росії, якщо користувач з Грузії і ввів 7. 777... - Має вибивати Казахстан. Пропускає вибір прапору Росії + Грузії, якщо користувач з Казахстану ввів 7 або 77.

Тобто пріоритет за рідною країною. Наприклад, якщо вводити номер "359", то відразу спрацьовує код країни Білорусі і прапор змінюється. Але не зміниться при 7 (код Росії), якщо користувач з України, бо є український оператор 073 -> 73.

Якщо ввести в інпут код країни поточної (користувач з України вводить український номер 380 ...), тоді код країни 380 прибирається для зручності. Працює для всіх країн. Зроблене розмежування +7 для Росії та +7 для Казахстана. Для кожного виведеться свій прапор в своїй країні.

До сторінки підключена валідація номерів. Перевіряв для відомих країн - Україна, Росія, Казахстан, Італія - все працює коректно та визначені оператори. Наприклад, телефон +380 12 555 12 34 - не пропускається, бо немає в Україні такого оператора (виводиться звичайне модальне вікно "Введіть коректний номер"). Для Італії передбачені два варіанта довжини номеру 10 і 11 цифр (перевірив, запити спрацювали коректно).

Якщо вибрати країну з випадаючого списку, то по Оператору і Способу "380", форматування відключається - країну не визначає (буде країна, яку вибрали). Визначає лише через +380 або повторному виборі країни з випадаючого списку. Це зроблено для того, щоб користувачеві не змінювався більше прапор після вибору.

Міжнародні номери +380 ..., +7 ..., +39 ... (IT) спрацьовують завжди.

Для коректного тесту, рекомендується перезавантажувати сторінку після кожного введення.

Всі номери проходять зовнішню валідацію. При успішній перевірці, телефон відправляється у вигляді +38050... (UA), +39363... (IT), +7912... (RU) (без пропусків і зі знаком +).

Може некоректно спрацьовувати в старих версіях браузерів або в старих мобільних браузерах.

Проблемка: якщо вводити телефон з + дуже швидко (кілька символів в секунду), то скрипт не встигає спрацювати і змінити прапор.

Встановлення

ПРАЦЮЄ ЛИШЕ НА СЕРВЕРІ

  1. Підключаємо скрипти, стилі та додаємо 2 картинки (змінюємо шлях в кінці файлу .css - img/images).
  2. До input'ів з маскою додаємо клас "everad-mask".
  3. Задаємо стилі під дизайн сторінки.

На сторінці завжди має бути <select>, але його можна сховати (display: none).

 <link href="css/intlTelInput.css" rel="stylesheet" type="text/css">
 <script src="js/jquery.min.js"></script>
 <script src="js/jquery.caret.min.js"></script>
 <script src="js/intlTelInput.min.js"></script>
 <!-- <script src="js/utils.js"></script> - автоматично підключається з everadmask.js. Якщо видає помилку, тоді підключаємо тут -->
 <script src="js/everadmask.js"></script>

About

Phone number formatting and validation for Everad Group usage.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published