powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Пустая форма отправляется даже с валидацией
6 сообщений из 6, страница 1 из 1
Пустая форма отправляется даже с валидацией
    #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
Пустая форма отправляется даже с валидацией
    #39942456
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikmatsuki,

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

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

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

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

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

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


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

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

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

После e.preventDefault();

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

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


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