Автоматическое форматирование телефонного номера в форме Elementor

Вопрос или проблема

У меня есть форма, созданная с помощью elementor form, и я пытаюсь отформатировать номер телефона следующим образом: (999) 999-9999. Я следовал руководствам, найденным в Интернете, и попытался использовать этот код:

<script>
document.addEventListener('DOMContentLoaded', function() {
  const phoneNumberInput = document.getElementById('form-field-phone');

  phoneNumberInput.addEventListener('input', formatPhoneNumber);

  function formatPhoneNumber() {
    let inputValue = phoneNumberInput.value;
    inputValue = inputValue.replace(/\D/g, ''); // Удаление недесятичных символов

    if (inputValue.length > 10) {
      inputValue = inputValue.slice(0, 10);
    }

    let formattedValue="";

    if (inputValue.length > 6) {
      const areaCode = inputValue.slice(0, 3);
      const prefix = inputValue.slice(3, 6);
      const lineNumber = inputValue.slice(6, 10);

      formattedValue = `${areaCode}-${prefix}-${lineNumber}`;
    } else if (inputValue.length > 3) {
      const areaCode = inputValue.slice(0, 3);
      const prefix = inputValue.slice(3, 6);

      formattedValue = `${areaCode}-${prefix}`;
    } else {
      formattedValue = inputValue;
    }

    phoneNumberInput.value = formattedValue;
  }
});

</script>

Я пробовал использовать пользовательский код elementor, а также добавлять html поле в form elementor. Я применил пользовательский id как ‘phone’, а тип поля — ‘tel’. Но это не работает и выдает ошибку

"Pattern attribute value [0-9()#&+*-=.]+ is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /[0-9()#&+*-=.]+/v: Invalid character in character class"

Есть ли способ это исправить?

Я провел дополнительные исследования и нашел код в видео на YouTube. Я немного его изменил, чтобы он работал с почтовым индексом, и это работает как ожидается. Также мне нужно было изменить тип поля с ‘tel’ для телефона и ‘number’ для индекса на ‘text’

<script type="text/javascript">
  jQuery(function ($) {
    $('#form-field-phone').on('input', function () {
      var input = $(this).val();

      // Удаление всех недесятичных символов
      input = input.replace(/\D/g, '');

      // Ограничение до 10 цифр
      input = input.slice(0, 10);

      // Форматирование в зависимости от длины ввода
      if (input.length > 6) {
        input="(" + input.slice(0, 3) + ') ' + input.slice(3, 6) + '-' + input.slice(6, 10);
      } else if (input.length > 3) {
        input="(" + input.slice(0, 3) + ') ' + input.slice(3, 6);
      } else if (input.length > 0) {
        input="(" + input.slice(0, 3);
      }

      // Обновление поля ввода отформатированным значением
      $(this).val(input);
    });
  });
</script>
<script type="text/javascript">
  jQuery(function ($) {
    $('#form-field-zipcodefive').on('input', function () {
      var input = $(this).val();

      // Удаление всех недесятичных символов
      input = input.replace(/\D/g, '');

      // Ограничение до точно 5 цифр
      input = input.slice(0, 5);

      // Обновление поля ввода отформатированным значением
      $(this).val(input);
    });
  });
</script>

.

Ответ или решение

Вопрос о форматировании телефонного номера в форме, созданной с помощью Elementor, является довольно распространенной задачей, с которой сталкиваются разработчики веб-сайтов. Основная проблема заключается в корректном представлении телефонного номера в формате (999) 999-9999, что удобно для пользователей и соответствует общепринятым стандартам.

Шаги для решения задачи

  1. Понимание проблемы: Прежде всего, проблему вызывает некорректная работа регулярных выражений и форматирования в JavaScript. Обратите внимание, что изначально вы заменили тип поля на ‘text’, что сняло ограничения на ввод только цифр, типичные для полей ‘tel’ и ‘number’.

  2. Поправка регулярного выражения: Ошибка "Pattern attribute value [0-9()#&+=.]+ is not a valid regular expression" была вызвана некорректным использованием символов внутри класса символов регулярного выражения. Эта проблема решается, если удалить специальный символ из регулярного выражения или перенести его в конец класса символов (например, ‘[0-9()#+-=.]+’).

  3. Использование JQuery для форматирования ввода: Следующий код уже успешно используется для форматирования номера телефона и почтового индекса, вводимых в форме.

// Форматирование ввода номера телефона
jQuery(function ($) {
  $('#form-field-phone').on('input', function () {
    var input = $(this).val();

    // Удаление всех нечисловых символов
    input = input.replace(/\D/g, '');

    // Ограничение до 10 цифр
    input = input.slice(0, 10);

    // Форматирование в соответствии с длиной введенных данных
    if (input.length > 6) {
      input = "(" + input.slice(0, 3) + ") " + input.slice(3, 6) + "-" + input.slice(6, 10);
    } else if (input.length > 3) {
      input = "(" + input.slice(0, 3) + ") " + input.slice(3, 6);
    } else if (input.length > 0) {
      input = "(" + input.slice(0, 3);
    }

    // Обновление значения в поле ввода
    $(this).val(input);
  });
});

// Форматирование ввода почтового индекса
jQuery(function ($) {
  $('#form-field-zipcodefive').on('input', function () {
    var input = $(this).val();

    // Удаление всех нечисловых символов
    input = input.replace(/\D/g, '');

    // Ограничение до 5 символов
    input = input.slice(0, 5);

    // Обновление значения в поле ввода
    $(this).val(input);
  });
});

Контекст и рекомендации

  • SEO-оптимизация: Чтобы улучшить выдачу сайта в поисковых системах, вы можете упомянуть в описаниях и мета-тегах ключевые слова, такие как "форматирование телефонного номера в Elementor", "маскирование ввода номера" и "формы с поддержкой Jquery".

  • Тестирование и отладка: Обязательно тестируйте решение на различных устройствах и браузерах, чтобы убедиться в корректной работе функционала.

  • Пользовательский опыт: Убедитесь, что интерфейс ввода и форматирование удобны для конечного пользователя и не вызывают затруднений.

Следуя данным рекомендациям и шагам, вы сможете реализовать корректное автосохранение и форматирование номера телефона в форме Elementor, что значительно улучшит пользовательский опыт и функциональность вашего веб-сайта.

Оцените материал
Добавить комментарий

Капча загружается...