Загрузка всплывающего окна с благодарностью при отправке формы - PullRequest
0 голосов
/ 10 октября 2011

У меня проблемы с загрузкой модального окна jQuery при отправке.

Я хочу, чтобы div загружался после отправки, чтобы поблагодарить пользователя за участие в конкурсе Div открывается нормально, если я добавлю href вроде: <a href="#dialog" name="modal">click here"</a>

Однако я не могу сделать это всплывающее окно после отправки. Я что-то не так делаю!?

Это мой php код:

<?php
if($_POST['formSubmit'] == "Submit")
{
    $errorMessage = "";

  if(empty($_POST['formName']))
  {
    $errorMessage .= "<li>You forgot to enter your name</li>";
  }
  if(empty($_POST['formTown']))
  {
    $errorMessage .= "<li>You forgot to enter your town</li>";
  }

    $varName = $_POST['formName'];
    $varTown = $_POST['formTown'];
    $varAge = $_POST['formAge'];
    $varEmail = $_POST['formEmail'];

    $varOne = $_POST['hidden-one'];
    $varTwo = $_POST['hidden-two'];
    $varThree = $_POST['hidden-three'];
    $varFour = $_POST['hidden-four'];
    $varFive = $_POST['hidden-five'];

    if(empty($errorMessage)) 
    {
        $fs = fopen("mydata.csv","a");
        fwrite($fs,$varName . ", " . $varTown . ", " . $varAge . ", " . $varEmail . ", " . $varOne . $varTwo . $varThree . $varFour . $varFive . "\n");
        fclose($fs);

        header("Location: #dialog");
        exit;
    }
}
?>

Это код jquery:

<script>

$(document).ready(function() {  

    //select all the a tag with name equal to modal
    $('a[name=modal]').click(function(e) {
        //Cancel the link behavior
        e.preventDefault();

        //Get the A tag
        var id = $(this).attr('href');

        //Get the screen height and width
        var maskHeight = $(document).height();
        var maskWidth = $(window).width();

        //Set heigth and width to mask to fill up the whole screen
        $('#mask').css({'width':maskWidth,'height':maskHeight});

        //transition effect     
        $('#mask').fadeIn(1000);    
        $('#mask').fadeTo("slow",0.8);  

        //Get the window height and width
        var winH = $(window).height();
        var winW = $(window).width();

        //Set the popup window to center
        $(id).css('top',  winH/2-$(id).height()/2);
        $(id).css('left', winW/2-$(id).width()/2);

        //transition effect
        $(id).fadeIn(2000); 

    });

    //if close button is clicked
    $('.window .close').click(function (e) {
        //Cancel the link behavior
        e.preventDefault();

        $('#mask').hide();
        $('.window').hide();
    });     

    //if mask is clicked
    $('#mask').click(function () {
        $(this).hide();
        $('.window').hide();
    });         

});

</script>

Это мой HTML:

<form action="enter.php" method="post" target="_self">      
    <input class="submit" type="submit" name="formSubmit" value="Submit">
</form>


<div id="boxes">

<div id="dialog" class="window">
    <p>Modal content here</p>
</div>
</div>

</div>
</div>

<!-- Mask to cover the whole screen -->
<div id="mask"></div>
</div>

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

Похоже, вы немного озадачены тем, что происходит между вашим веб-браузером и вашим веб-сервером.

В вашем веб-браузере запущен клиент, который отображает HTML / CSS и выполняет JavaScript. Ваш браузер отправит запрос на веб-сервер, который выполняет PHP для генерации ответа.

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

0 голосов
/ 10 октября 2011

Если у вас есть кнопка «Отправить» и вы не звоните по адресу warndefault или что-то в этом роде, ваша форма будет опубликована, а ваша страница обновлена. Таким образом, ваш код js больше не выполняется. Вам нужно использовать обычную кнопку или ссылку и привязать к ней событие onclick, которое сначала показывает всплывающее окно с благодарностью, а затем «вручную» отправляет форму через JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...