@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>
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 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 имеют свойство кешироваться в браузере, по этому они не будут изменяться при простом обновлении страницы, и вы будете долго думать почему ничего не работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы