Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2021, 21:59
Новичок на форуме
Отправить личное сообщение для Qsnakes Посмотреть профиль Найти все сообщения от Qsnakes
 
Регистрация: 18.07.2021
Сообщений: 5

Не работает код валидации на JS
Ребят, только новичок в теме разработки, помогите найти ошибку в коде, целый день потратил на это, будут полезны любые советы.

p.s консоль выдает ошибки на: 59, 30, 10 строке кода



"use strict"

document.addEventListener('DOMContentLoaded', function () {
    const form = document.getElementById('form');
    form.addEventListener('submit', formSend);

    async function formSend(e) {
        e.preventDefault();

        const error = formValidate(form);

        if (error === 0) {
            
        } else {
            alert('Заполните обязательные поля');
        }

    }


    function formValidate(form) {
        let error = 0;
        let formReq = document.querySelectorAll('._zxc');

        for (let index = 0; index < formReq.length; index++) {
            const input = formReq[index];
            formRemoveError(input);

            if (input.classList.contains('_email')) {
                if (emailTest(input)) {
                    formAddError(input);
                    error++;
                }
            } else if (input.getAttribute("type") === 'checkbox' && input.checkbox === false) {
                formAddError(input)
                error++;
            } else {
                if (input.value === '') {
                    formAddError(input);
                    error++;
                }
            }
        }
        return error;
    }

    function formAddError(input) {
        input.parentElement.classList.add('_error');
        input.classList.add('_error');
    }

    function formRemoveError(input) {
        input.parentElement.classList.remove('_error');
        input.classList.remove('_error');
    }

    //Функция проверки E-mail
    function emailTest(input) {
        const re = !/^\w+([\.-]?\w+)*@\w+)[\.-]?\w+)*(\.\w{2,8})+$/
        return re.test(input.value);
    }
});
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2021, 22:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,791

Qsnakes,
строка 59 странный RegExp, про остальное можно только гадать без макета.
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2021, 22:13
Новичок на форуме
Отправить личное сообщение для Qsnakes Посмотреть профиль Найти все сообщения от Qsnakes
 
Регистрация: 18.07.2021
Сообщений: 5

рони,
Прошу прощения что сразу не предоставил https://jsfiddle.net/5g30tzsf/
Ответить с цитированием
  #4 (permalink)  
Старый 18.07.2021, 22:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,791

Qsnakes,
исправьте строку 59 и связанную с ней строку 30 -- других ошибок не вижу.
Ответить с цитированием
  #5 (permalink)  
Старый 18.07.2021, 22:25
Новичок на форуме
Отправить личное сообщение для Qsnakes Посмотреть профиль Найти все сообщения от Qsnakes
 
Регистрация: 18.07.2021
Сообщений: 5

рони,
Спасибо огромное, займусь этим
Ответить с цитированием
  #6 (permalink)  
Старый 18.07.2021, 22:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,791

Qsnakes,
заменить соответствующую функцию, в дальнейшем можно уточнить RegExp, если эта версия не устроит.
//Функция проверки E-mail
    function emailTest(input) {
        const re = /^\w+([\.-]?\w+)*@(\w+[\.-]?\w+)*(\.\w{2,8})+$/
        return !re.test(input.value);
    }
Ответить с цитированием
  #7 (permalink)  
Старый 18.07.2021, 22:39
Новичок на форуме
Отправить личное сообщение для Qsnakes Посмотреть профиль Найти все сообщения от Qsnakes
 
Регистрация: 18.07.2021
Сообщений: 5

рони,
О господи не знаю как вас отблагодарить, действительно все заработало, а не подскажите где можно прочитать про этот восклицательный знак и как он все починил?
Ответить с цитированием
  #8 (permalink)  
Старый 18.07.2021, 22:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,791

Сообщение от Qsnakes
где можно прочитать про этот восклицательный знак
"починил" всё синтаксически правильный RegExp, а куда воткнуть логический оператор не не так важно https://learn.javascript.ru/logical-operators#ne
с таким же успехом восклицательный знак можно перенести в строку 30
if (!emailTest(input))

из return emailTest.

весь вопрос? что должна вернуть функция true или false, это значение можно изменить на любой стадии. объяснил как мог)))
Ответить с цитированием
  #9 (permalink)  
Старый 18.07.2021, 23:05
Новичок на форуме
Отправить личное сообщение для Qsnakes Посмотреть профиль Найти все сообщения от Qsnakes
 
Регистрация: 18.07.2021
Сообщений: 5

рони,
Спасибо еще раз, за статью отдельное спасибо, очень помогли
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в html вставить код, а конкретно переменную js Амай Общие вопросы Javascript 1 17.01.2020 17:32
JS код вставленный в iframe работает в родительском окне jeka2 Общие вопросы Javascript 0 04.09.2015 13:09
Не работает код, при дублировании блоков! Rockship Элементы интерфейса 8 17.06.2015 11:47
запихнуть код js в тэг html Giku Общие вопросы Javascript 10 07.11.2013 03:33
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 11:41