Всплывающее окно после отправки на почту (перезагружается страница)

Всем привет, делал сайт , по заданию нужно нужно сделать всплывающее окно "Сообщение отправлено" , я делал по принципу замены css "display" с "none" на "block" , все бы хорошо , вот только скрипт php перезагружает страницу, и получается что вылезает окно , и через пол секунды пропадает , я бы сделал алертом , но так нельзя, кто-нить сталкивался с такой проблемой?я прикреплю архив если кто захочет посмотреть , а здесь напишу важную частьФорма , при нажатии на кнопку запускается скрипт который должен вытащить нам окошко
<form method="post" onsubmit="yaCounter23469025.reachGoal('Otpravka'); return true;" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="contactform">
<div>
<input type="text" size="45" name="contactname" placeholder="Имя" id="contactname" value="" class="block14_1" />
</div>
 <div>
  <input type="text" size="45"placeholder="Номер телефона" name="tel" id="tel" value="" class="block15_1" />
  </div>
  <input type="submit" value="" name="submit" class="mail_1"  onClick="f1();"/>
  </form>
Сам скриптик
    function f1()
    {
        var vspl1 = document.getElementById('vspl1');
        vspl1.style.display = 'block';
        setTimeout('alert("прошла секунда")', 5000);
 
    }
пытался сделать задержку, что бы хотя бы 5 секунд ждало а потом перезагружало
<?php
  //Если форма отправлена
  if(isset($_POST['submit'])) {
 //Проверка Поля ИМЯ
  if(trim($_POST['contactname']) == '') {
  $hasError = true;
  } else {
  $name = trim($_POST['contactname']);
  }
 //Проверка Поля ИМЯ
  if(trim($_POST['tel']) == '') {
  $hasError = true;
  } else {
  $tel = trim($_POST['tel']);
  }
 //Если ошибок нет, отправить email
  if(!isset($hasError)) {
  $emailTo = '[removed_email]'; //Сюда введите Ваш email
  $body = "Name: $name \nTelefon: $tel \n";
  $headers = 'From: My Site <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;
 
 mail($emailTo, $subject, $body, $headers);
  $emailSent = true;
  }
  }
  ?>
Может есть способ просто запаузить на какое-то время, а потом не важно что перезагрузка, может есть модальное окно типо алерт , которое будет ставить на паузу все и например через 5 секунд закрываться? Заранее спасибо С новым годом всех
4 ответа

дык, окно свое "приветствия" и скрипт его показывающий лепить нужно не к форме, отправляющей данные, а к обработчику. тем более, что обработчик и результат настоящий знает - прошла отправка или нет...


дык, окно свое "приветствия" и скрипт его показывающий лепить нужно не к форме, отправляющей данные, а к обработчику. тем более, что обработчик и результат настоящий знает - прошла отправка или нет...
если можно расскажите пожалуйста чуть подробнее, скрипты только начал изучать


if (mail($emailTo, $subject, $body, $headers))
{
  $emailSent = true;
echo "<div id=\"msgdiv\"  onclick=\"HideDiv();\">Ваше письмо отправлено </div>";
echo "<script language=\"JavaScript\"> 
   function HideDiv () {
      document.getElementById(\"msgdiv\").style.visibility=\"hidden\";
        }
</script>";
}


if (mail($emailTo, $subject, $body, $headers))
{
  $emailSent = true;
echo "<div id=\"msgdiv\"  onclick=\"HideDiv();\">Ваше письмо отправлено </div>";
echo "<script language=\"JavaScript\"> 
   function HideDiv () {
      document.getElementById(\"msgdiv\").style.visibility=\"hidden\";
        }
</script>";
}
Спасибо большое что написали пример , я только потом понял что вы имели ввиду , и сделал такую вещь
echo "<script>var vspl1 = document.getElementById('vspl1');
        vspl1.style.display = 'block';
        
            </script>";
сейчас буду смотреть что получше будет , спасибо еще раз и с новым годом)