Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Пустая форма отправляется даже с валидацией / 6 сообщений из 6, страница 1 из 1
30.03.2020, 19:10
    #39942333
rikmatsuki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая форма отправляется даже с валидацией
Добрый день! Очень прошу о помощи. Я начинающий, сделал форму по скрипту, который нашел с использованием JQuery Validation ( https://jqueryvalidation.org/category/plugin/). Все работает, данные отправляются на почту, валидация тоже вроде есть, но: если оставить все поля пустыми, то форма все равно отправится (появится модальное окошко #thanks) и в форме только тогда появятся подсказки.
Я уже измучился, весь интернет перерыл, а JS пока не очень знаю, может есть какой-то способ сделать так, чтобы форма не отправлялась, пока все поля пустые? Вроде у каждого прописан required, есть preventDefault и return false, почему же так происходит?

Здесь часть кода из скриптового файла:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
function validateForms(form) {
        $(form).validate({
            rules: {
                name: {
                    required: true,
                    minlength: 2
                },
                phone: "required",
                email: {
                    required: true,
                    email: true
                }
            },
            messages: {
                name: {
                    required: "Пожалуйста, введите свое имя",
                    minlength: jQuery.validator.format("Введите {0} символа!")
                },
                phone: "Пожалуйста, введите свой телефон",
                email: {
                    required: "Пожалуйста, введите свою почту",
                    email: "Неправильно введен адрес почты"
                }
            }
        });
    };
 
    validateForms('#consultation-form');
    validateForms('#consultation form');
    validateForms('#order form');
 
    $('input[name=phone]').mask("+7 (999) 999-99-99");
 
    $('form').submit(function(e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "mailer/smart.php",
            data: $(this).serialize()
        }).done(function() {
            $(this).find("input").val("");
            $('#consultation, #order').fadeOut();
            $('.overlay, #thanks').fadeIn('slow');
            $('form').trigger('reset');
        });
        return false;
    });



Файл smart.php:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<?php 
 
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
 
require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';
 
 
 
$mail->isSMTP();                                      
$mail->Host = 'smtp.yandex.ru';  
$mail->SMTPAuth = true;                              
$mail->Username = 'логин';                 
$mail->Password = 'пароль';                           
$mail->SMTPSecure = 'ssl';                          
$mail->Port = 465;                                    
 
$mail->setFrom('почта отправителя', '');  
$mail->addAddress('почта получателя');     
$mail->isHTML(true);                                  
 
$mail->Subject = 'Данные';
$mail->Body    = '
        Пользователь оставил данные 
 
    Имя: ' . $name . ' 
    Номер телефона: ' . $phone . '
    E-mail: ' . $email . '';
 
if(!$mail->send()) {
    return false;
} else {
    return true;
}
 
?>



Буду благодарен любым советам!
...
Рейтинг: 0 / 0
31.03.2020, 10:19
    #39942456
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая форма отправляется даже с валидацией
rikmatsuki,

выполняйте перед отправкой $(form).validate()
...
Рейтинг: 0 / 0
01.04.2020, 02:28
    #39942722
rikmatsuki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая форма отправляется даже с валидацией
artas,

Если пишу $(form).validate() перед e.preventDefault(); то дальше все не работает, форма не отправляется.
Или как перед отправкой выполнить, возможно я недопонял?
Спасибо!!
...
Рейтинг: 0 / 0
08.12.2020, 18:40
    #40025739
dorado13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая форма отправляется даже с валидацией
rikmatsuki,

Получилось решить данную проблему? Как?
...
Рейтинг: 0 / 0
08.12.2020, 18:57
    #40025746
dorado13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая форма отправляется даже с валидацией
rikmatsuki,

Я нашел наконец-то в чем причина!

В этой строке $('form').submit(function(e) не нужны кавычки в form!

Должно быть вот так $(form).submit(function(e)


P.S. Я знаю откуда вы брали этот код. Тоже проходил тот курс по веб-разработке. Этот "учитель", Иван Петриченко, в своем курсе кучу косяков сделал и не исправил даже в финальной версии сайта! Если он такие сайты в продакшн выпускает... М-да... Не советую вообще учиться у него!
...
Рейтинг: 0 / 0
08.12.2020, 20:38
    #40025776
dorado13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая форма отправляется даже с валидацией
rikmatsuki,

поспешил с тем ответом. И нельзя редактировать их.

Вот правильное решение:

После e.preventDefault();

нужно вставить вот эти две строчки, который будут проверять валидна форма или нет, если нет, то дальше код не будет работать и соответственно пустая или не заполненная до конца форма не отправится

let $form = $(this);
if(! $form.valid()) return false;
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Пустая форма отправляется даже с валидацией / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]