重置ajax表单提交,以便可以再次发送新信息

时间:2013-09-06 06:29:55

标签: php jquery html

这是一个弹出窗体,我想使用,问题是在窗体提交一次之后,它不再显示发送不同的信息,唯一的方法是重新加载页面,但我不想那样做。

here's the website

here's the live demo

   <!-- basic fancybox setup -->
 <script type="text/javascript">
function validateEmail(email) { 
    var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|         (\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-  zA-Z]{2,}))$/;
    return reg.test(email);
}

 $(document).ready(function() {
    $(".modalbox").fancybox();
    $("#contact").submit(function() { return false; });


    $("#send").on("click", function(){
        var emailval  = $("#email").val();
        var msgval    = $("#msg").val();
        var msglen    = msgval.length;
        var mailvalid = validateEmail(emailval);

        if(mailvalid == false) {
            $("#email").addClass("error");
        }
        else if(mailvalid == true){
            $("#email").removeClass("error");
        }

        if(msglen < 4) {
            $("#msg").addClass("error");
        }
        else if(msglen >= 4){
            $("#msg").removeClass("error");
        }

        if(mailvalid == true && msglen >= 4) {
            // if both validate we attempt to send the e-mail
            // first we hide the submit btn so the user doesnt click twice
            $("#send").replaceWith("<em>sending...</em>");

            $.ajax({
                type: 'POST',
                url: 'sendmessage.php',
                data: $("#contact").serialize(),
                success: function(data) {
                    if(data == "true") {
                        $("#contact").fadeOut("fast", function(){
                            $(this).before("<p><strong>Success! Your feedback has been sent, thanks :)</strong></p>");
                            setTimeout("$.fancybox.close()", 1000);
                        data == "true"; 
                        });
                    }
                }
            });
        }
    });
});

2 个答案:

答案 0 :(得分:0)

在模型框锚链接上,单击下面的代码。

$('#contact').show().prev('p').hide();

完整的代码将是

$('.modalbox').click(function(){
   //$('#contact').show().prev('p').hide();
   $('#contact').prev('p').hide();
   $('#contact').show();
});

答案 1 :(得分:0)

您使用代码隐藏表单:

$("#contact").fadeOut("fast", function(){
  $(this).before("<p><strong>Success! Your feedback has been sent, thanks :)</strong></p>");
  setTimeout("$.fancybox.close()", 1000);
}

因此,您应该添加带ID的新div,而不是它。 result并显示在那里发送结果。

$("#result").html("<p><strong>Success! Your feedback has been sent, thanks :)</strong></p>");
setTimeout("$.fancybox.close()", 1000);