НачалоОсновыКомпонентыТексты

Поле телефона

Поле телефона принимает международный номер: выбор кода страны, соединённый с полем номера, которое форматируется при вводе. Это голое поле; подпись, подсказку и ошибки даёт обёртка Field.

Стабильный Figma
ОбзорИспользованиеAPIДоступность
<tk-field label="Phone number" required>
  <tk-phone-input name="phone" country="US"></tk-phone-input>
</tk-field>

Анатомия

Часть Что это
tk-phone-input сам элемент; две остановки Tab: код страны и номер
part field рамка вокруг обеих частей
part prefix компактный Country select: флаг и код страны, открывает список стран с поиском
part number нативный <input type="tel"> для номера внутри страны

Подпись, подсказку и сообщение об ошибке даёт Field. Выбор кода сам называет себя «Country calling code»; поменять имя можно через country-label.

Размеры

<tk-phone-input aria-label="Medium phone input" country="GB"></tk-phone-input>
<tk-phone-input aria-label="Large phone input" country="GB" size="large"></tk-phone-input>
size Высота
medium (по умолчанию) 32px
large 36px

Поле телефона занимает всю ширину контейнера.

Состояния

<tk-phone-input aria-label="Office phone" value="+12133734253" readonly></tk-phone-input>
<tk-phone-input aria-label="Office phone" value="+12133734253" disabled></tk-phone-input>
<tk-field label="Phone number" error="Enter a phone number, like 07700 900 982">
  <tk-phone-input name="phone" country="GB" value="+44770"></tk-phone-input>
</tk-field>

При наведении поле не меняется. Фокус на любой из частей подсвечивает общую рамку, и она утолщается внутрь.

  • readonly: номер можно прочитать и скопировать, но не изменить.
  • disabled: на обе части нельзя перейти, их нельзя изменить, ничего не отправляется.
  • Ошибка: задайте error на Field. Рамка становится красной и остаётся красной в фокусе.
  • Обязательность: задайте required на Field; он добавит звёздочку и сделает номер обязательным.

Формат и значение

  • Номер форматируется при вводе так, как его принято записывать в каждой стране. Чтобы оставить цифры как есть, задайте свойству format значение false из кода; атрибутом форматирование не выключить.
  • Если ввести код через +, страна переключится. Поле никогда не добавляет код, который не вводили.
  • Плейсхолдер — пример номера для выбранной страны, если вы не задали свой placeholder.
  • value — полный номер в формате E.164, например +12133734253. Его форма отправляет под именем name, и его же стоит хранить. Если задать value, заполнятся обе части.
  • country — двухбуквенный код выбранной страны; nationalNumber — номер без кода страны. Определять страну по местоположению или языку — ваша задача.

Проверка

Поле телефона не проверяет номер, пока вы не попросите. А когда показывать ошибку на Field, решаете вы.

  • validate: неверный номер не даёт отправить форму. Рамка не краснеет, сообщения нет.
  • checkPhoneValidity(): возвращает { valid, reason }. Вызовите при уходе с поля или при отправке и превратите результат в error на Field.

Проверка нужна, чтобы подсказать, что не так, а не чтобы переписать введённое.

Подпись, подсказка и ошибки

<tk-phone-input aria-label="Mobile number" country="DE"></tk-phone-input>
  • Оберните поле телефона в Field. Подпись, подсказка и ошибка Field называют и описывают поле номера.
  • Без видимой подписи задайте aria-label (или aria-labelledby) на поле телефона.
  • Плейсхолдер — не подпись: он исчезает, как только начинают вводить.