在表单提交上加载谢谢弹出div

时间:2011-10-10 16:06:37

标签: php javascript jquery html forms

我在提交时加载jQuery模式窗口时遇到问题。

我希望在提交时加载div以感谢用户参加比赛。如果我添加一个像<a href="#dialog" name="modal">click here"</a>

这样的href,div就会打开

但是我似乎无法在提交后弹出这个弹出窗口。我做错了什么!?

这是我的表单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 :(得分:0)

如果你有一个提交按钮,并且没有调用preventdefault或类似的东西,那么你的表单就会被发布并且你的页面会被刷新。所以你的js代码不再执行了。您需要做的是使用普通按钮或链接并将onclick事件绑定到它,首先显示感谢弹出窗口,然后“手动”通过JavaScript提交表单。

答案 1 :(得分:0)

听起来您可能会对网络浏览器和网络服务器之间发生的事情感到有些困惑。

您的网络浏览器正在运行一个呈现HTML / CSS并执行JavaScript的客户端。您的浏览器将向Web服务器提交请求,该服务器执行PHP以生成响应。

提交表单后,会向Web服务器发出请求,该服务器会生成响应 - 通常是另一个HTML页面。这是你的感谢信息。