@damir_tok

Как отключить strictMode у плагина intl-tel-input?

На сайте подключен плагин https://intl-tel-input.com/examples/separate-dial-...

При выборе страны "Таиланд" мне нужно отключать strictMode

Как отследить выбор страны понимание есть, но отключить strictMode не удалось

const inputs = document.querySelectorAll(".phone-input");
    inputs.forEach(function (item, i, arr) {
        var iti = window.intlTelInput(item, {
            initialCountry: "ru",
            separateDialCode: true,
            strictMode: true,
            utilsScript: "https://cdn.jsdelivr.net/npm/intl-tel-input@23.1.0/build/js/utils.js",
        });
    });
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ответы на вопрос 1
cdcdcd
@cdcdcd
Bug creator
Для отключения strictMode в плагине intl-tel-input при выборе определенной страны, можешь использовать метод setOptions после инициализации.
Тем не менее, можно реализовать сброс и повторную инициализацию плагина с обновленным значением strictMode

if (selectedCountry === "th") {
            iti.destroy(); // Уничтожаем текущий экземпляр
            iti = window.intlTelInput(item, {
                initialCountry: "th",
                separateDialCode: true,
                strictMode: false,
                utilsScript: "https://cdn.jsdelivr.net/npm/intl-tel-input@23.1.0/build/js/utils.js",
            });
        }


Такой подход является рабочим, но не самым оптимальным (ресурсоемкое)

как вариаент:
- фильтрация пользовательского ввода без пересоздания
Если strictMode отвечает за валидацию ввода, можно отключить его влияние, добавив свою собственную логику валидации, независимо от состояния strictMode.

const isValidNumber = iti.isValidNumber();
if (!isValidNumber && selectedCountry !== "th") {
    // Показываем ошибку для других стран, но не для Таиланда
}


Если количество полей небольшое, пересоздание экземпляра (destroy и пересоздание) подходит как простое и понятное решение, в иных решениях нет
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы