Добрый день! Очень прошу о помощи. Я начинающий, сделал форму по скрипту, который нашел с использованием jQuery Validation.
Все работает, данные отправляются на почту, валидация тоже вроде есть.Но, если оставить все поля пустыми, то форма все равно отправится (появится модальное окошко #thanks
) и в форме только тогда появятся подсказки.
Вроде у каждого прописан required
, есть preventDefault
и return false
.
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;
});
Здесь PHP-код:
<?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 = "Пользователь оставил данные <br>Имя: $name <br>Номер телефона: $phone <br>E-mail: $email";
if (!$mail->send()) {
return false;
} else {
return true;
}
Чувствую я, что вы проходили курс Петриченко)
Спасибо за поднятие этого вопроса, так бы долго мучался!
Чтобы у вас всё работало корректно необходимо:
1. Добавить к каждой форме атрибут action, т.к. разные формы в принципе на сервере могут обрабатываться разными php-файлами:
2. Изменить весь представленный вами JavaScript код на следующий:
Действительно, переделал, все формы идеально работают.
Спасибо за ваш труд!