@Nub_Ready
Начинающий Front-end разработчик Опыт >6 месяцев

Как подключить обработчик формы, на форму из Pop-up?

Есть SMTP-mailer, который отправляет данные формы через AJAX запрос, на основной странице все формы к нему подключены и исправно работают, но в pop-up при таком же подключении форма не работает. При клике на кнопку ничего не происходит.

Вот сам обработчик
<?php 

$name = $_POST['user_name'];
$phone = $_POST['user_phone'];
$skype = $_POST['user_skype'];

require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.yandex.ru';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'lending.sc@yandex.ru';                 // Наш логин
$mail->Password = 'qert234';                           // Наш пароль от ящика
$mail->SMTPSecure = 'ssl';                           // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;                                    // TCP port to connect to
 
$mail->setFrom('lending.sc@yandex.ru', 'Школа Немецкого Языка');   // От кого письмо 
$mail->addAddress('kurbatov279@yandex.ru');     // Add a recipient
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Заявка  на пробный урок';
$mail->Body    = 'Пользователь оставил свои данные <br> Имя: ' . $name . ' <br>Телефон: ' . $phone . ' <br>Skype: ' . $skype . ' ';


if(!$mail->send()) {
    return false;
} else {
    return true;
}

?>


Вот скрипт c Ajax:

$( "form" ).submit(function( mail ) {
    event.preventDefault();
    $.ajax({
    type: "POST",
     url: "mailer/smart.php",
    data: $(this).serialize()
  }).done(function() {
    $(this).find("input").val("");
    alert("Сообщение успешно отправлено");
    $("form").trigger("reset");
  });
  return false;
  });


И собственно форма на основной странице:

<form action="#mail" method="POST" class="wrap-form">
        <div class="wrap-input">
         <input type="text" name="user_name" placeholder="введите ваше имя">
         <input type="tel" name="user_phone" placeholder="ваш номер телефона">
        </div>
        <div class="wrap-button">
         <button class="btn blik"type="submit">перезвоните мне</button>
        </div>
      </form>


И форма в pop-up(единственное, что отличает ее от обычной это наличие поля skypе):

<form action="mailer/smart.php" method="POST">
        <input type="text" name="user_name" placeholder="введите ваше имя">
        <input type="tel" name="user_phone" placeholder="введите номер телефона">
        <input type="text" name="user_skype" placeholder="скайп">
        <label for="#">не обязательное поле</label>
        <button type="submit" class="btn popup-btn">оставь заявку</button>
      </form>
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 2
irishmann
@irishmann
Научись пользоваться дебаггером
Должно сработать
$(document).on('submit', 'form', function (){
    //Ajax
});
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
И форма в pop-up(единственное, что отличает ее от обычной это наличие поля skypе):
откуда она берется? Для того чтобы событие на ней работало она должна быть в теле документа, на момент создания слушателя. А слушатель должен вешать события только когда документ полностью загружен.
Вы опять намутили какую-то хрень, которая работать как надо не будет.
1) Скрипт с аяксом должен быть внутри события загрузки страницы.
2)
$( "form" ).submit(function( mail ) {
    event.preventDefault();    ...
бредовая конструкция не делающая НИЧЕГО, в функцию передается СОБЫТИЕ event(у вас там какой-то mail).
3) файлы js имеют свойство кешироваться в браузере, по этому они не будут изменяться при простом обновлении страницы, и вы будете долго думать почему ничего не работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 18:38
1500 руб./в час
19 апр. 2024, в 18:36
1500 руб./за проект
19 апр. 2024, в 18:36
30000 руб./за проект