Показать сообщение отдельно
  #4 (permalink)  
Старый 15.10.2021, 00:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Alexander3928,
не дробите на части, делайте макет целиком, чтоб можно было сразу искать проблему, а не собирать по кусочку.
Сообщение от Alexander3928
Делал валидацию для номера телефона. использовал switch case и метод match(), для проверки валидации. Но возникла проблема, что он если не подходит под регулярку (то-есть то что я пиши в input), оно дает ошибку что 0 равняется null (0 это то что нашла регулярка методом match()). И 2 проблема, постоянно я не могу найти input если консолю к примеру переменую telephon, а если консолю как раз input оно мне пишет undefined
мне требуется переводчик ... но возможно вы хотели так ... строки 25-30
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
</head>

<body>
    <form class="form-contact"></form>
    <script>
        const form = document.querySelector(".form-contact");
        const regExTelephon = /(\+)?((\d{2})?\(?0)\d{2}\)?(\d{3})(\d{2})(\d{2})/;

        function check_value(input) {
            const regExObj = {
                [input.name]: input.value,
                objname: input.name
            }

            if (input.value.trim()) {
                switch (input.name) {
                    case "telephon":
                        const tel_spase = input.value.replace(/\s/g, '');
                        const err = !regExTelephon.test(regExTelephon);
                        if (err) {
                            regExObj.error = "Номер не корректен";
                            return regExObj
                        }
                        const telephon = tel_spase.match(regExTelephon);
                        const tel_group = telephon[0].replace(regExgTelGroup, `38 ($2) $3 $4 $5`);

                        break;
                }
                regExObj[input.name] = input.value
                return regExObj
            } else {
                regExObj.error = 'Поле должно быть заполнено'
                return regExObj
            }
        }
        form.addEventListener("submit", (e) => {
            e.preventDefault();

            const input = document.querySelectorAll(".form-item__input");

            input.forEach((input) => {
                const result = check_value(input);

                if (result.error) {
                    input.classList.add("_error")
                    document.querySelector(`.form-error_${result.objname}`).innerHTML = result.error;
                } else {
                    input.classList.remove("_error")
                    document.querySelector(`.form-error_${result.objname}`).innerHTML = "";
                }
            });
        });
        const arr_form = [
            ["text", "name", "Your name"],
            ["text", "telephon", "Mobile"],
            ["text", "email", "Email"],
        ]

        function inputForm(e) {
            let obj_str = "";
            for (let e of arr_form) {
                obj_str += `
            <div class="form-item">
                <input type="${e[0]}" class="form-item__input" name="${e[1]}" placeholder="${e[2]}">
                <span class="form-error_${e[1]}"></span>
            </div>
        `;
            }
            form.innerHTML += obj_str;
        }
        inputForm()

        function formSub() {
            const text_and_sub = `
        <textarea class="form__textarea"  placeholder="Your Message"></textarea>
        <button class="form-submit" type="submit">SEND</button>
    `;
            form.innerHTML += text_and_sub;
        }
        formSub()
    </script>
</body>

</html>
Ответить с цитированием