Не присваивается корректно значение переменной в input.value с jquery.inputmask.js

Есть input name="phone" с маской номера. при вводе телефона в нем будет значение например "+357 91-111-111". Перед отправкой формы я обрабатываю это значение чтобы привести его к строке вида "+35791111111" (именно в таком виде необходимо отправить форму). Но при присваивании значение не заменяется полностью (форма отправляет "+357 93-579-111"), а добавляется к постоянному значению маски и сохраняет все ненужные символы. Подозреваю что проблема в специфике работы скрипта маски, но все же хочется решить эту проблему оставив скрипт маски

$(document).ready(function () {
                $("#phone").inputmask({
                    mask: "+357 \\99-999-999",
                });
            });

document
                .getElementById("lead-form")
                .addEventListener("submit", function (event) {
                    let phoneInput = this.phone.value;
                    console.log(phoneInput); //+357 91-111-111
                    function transformPhoneNumber(phone) {
                        // Удаляем все символы, кроме цифр
                        return phone.replace(/[^\d]/g, "");
                    }

                    const value = transformPhoneNumber(phoneInput);
                    console.log(value); //35791111111
                    // Проверка длины введенного номера
                    if (value.length < 11) {
                        event.preventDefault(); // Запретить отправку формы
                        return;
                    } else {
                        // Получаем значение из скрытого инпута
                        const phonecc = this.phonecc.value; //тут пока просто будет знак "+"

                        // Добавляем значение в phone
                        console.log(phonecc + value); //+35791111111
                        this.phone.value = phonecc + value;
                        console.log(this.phone.value); //+357 93-579-111 !!!!

                        // Форма будет отправлена с обновленным значением
                        this.submit();
                    }
                });

Ответы (1 шт):

Автор решения: Owlly

можно отключить маску перед отправкой формы, потом включить её если надо

$(document).ready(function () {
    $("#phone").inputmask({
        mask: "+357 \\99-999-999",
    });
});

document.getElementById("lead-form").addEventListener("submit", function (event) {
    let phoneInput = this.phone.value;
    console.log(phoneInput); // Например, "+357 91-111-111"

    function transformPhoneNumber(phone) {
        // Удаляем все символы, кроме цифр
        return phone.replace(/[^\d]/g, "");
    }

    const value = transformPhoneNumber(phoneInput);
    console.log(value); // "35791111111"

    if (value.length < 11) {
        console.log("Введите корректный номер телефона");
        return; // Не отправляем форму
    } else {
        // Убираем маску перед изменением значения
        $("#phone").inputmask("remove");

        const phonecc = this.phonecc.value;
        this.phone.value = phonecc + value;

        console.log(this.phone.value); // "+35791111111"

        // Отправляем форму
        this.submit();
    }
});
→ Ссылка