Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.10.2021, 12:37
Аспирант
Отправить личное сообщение для Alexander3928 Посмотреть профиль Найти все сообщения от Alexander3928
 
Регистрация: 19.05.2021
Сообщений: 75

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

<form class="form-contact"></form>


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 telephon = tel_spase.match(regExTelephon);

        if(telephon[0] !== telephon.input) {
          regExObj.error = "Номер не корректен"
          return regExObj
        }

        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
  }
}


собитые submit

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 = "";
    }
  });
});


функция сохдания input на JS

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()

Последний раз редактировалось Alexander3928, 14.10.2021 в 23:07.
Ответить с цитированием
  #2 (permalink)  
Старый 14.10.2021, 12:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Alexander3928,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 14.10.2021, 23:10
Аспирант
Отправить личное сообщение для Alexander3928 Посмотреть профиль Найти все сообщения от Alexander3928
 
Регистрация: 19.05.2021
Сообщений: 75

Сообщение от рони Посмотреть сообщение
Alexander3928,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
рони,
Я отредактировал прошлое сообщение. Надеюсь теперь все будет ок и рассшитываю на помощь
Ответить с цитированием
  #4 (permalink)  
Старый 15.10.2021, 00:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выдает 500 хотя как бы ни было обращятся должен к одному res riaron Node.JS 10 21.09.2020 23:04
Chome 18.0.1025.142 Prompt() возвращает NULL как строку alexben Opera, Safari и др. 10 07.04.2012 16:33
скрипт выдает ошибку z is null sedoyksa ExtJS 8 07.11.2011 10:58
select .text() с числами в Chrome возвращает null m3hc jQuery 4 26.09.2011 16:36
ИЕ выдает ошибку в простеньком скрипте. QQQ AJAX и COMET 14 27.03.2009 18:10