Задать вопрос
@Togar

Как сделать onChange валидацию номера телефона на React?

Подскажите как сделать onChange валидацию номера телефона, чтобы она работала так:
пользователь постепенно вводит строку, а она автоматически формарируется как номер телефона:

1111 => +1 (111)
00000000000 => +0 (000) 000 00 00
  • Вопрос задан
  • 1042 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 3
kirbi1996
@kirbi1996
Гугли реакт инпут маск или подобные ей библиотеки
Ответ написан
@Gradient1712
Стоит взглянуть на библиотеку Cleave.js
Ответ написан
@shsv382
На чистом JS
const phone = document.getElementById('phone');

const phoneFormat = function(e) {
  let content = e.target.value;
  if(!content) return;
  content = Array.from(content).filter(ltr => ltr.charCodeAt(0) > 47 && ltr.charCodeAt(0) < 58);
  
  switch(content[0]) {
    case "8":
      content[0] = "7";
      break;
    case "9":
      content.unshift("7");
      break;
    default:
      break;
  }
  
  let [countryCode, operatorCode, number3, number21, number22] = [
                                                                  content[0], 
                                                                  content.slice(1,4).join(''), 
                                                                  content.slice(4,7).join(''),
                                                                  content.slice(7,9).join(''),
                                                                  content.slice(9,11).join(''),
                                                                 ]

  e.target.value = countryCode.length ? `+${countryCode}` : '';
  if(operatorCode.length) e.target.value += `(${operatorCode}`;
  if(number3.length) e.target.value += `)${number3}`;
  if(number21.length) e.target.value += `-${number21}`;
  if(number22.length) e.target.value += `-${number22}`;
}

phone.oninput = (e) => phoneFormat(e);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽