2

これがポップアップフォームです。使用したいのですが、問題はフォームが一度送信された後です。別の情報を送信するために再度表示されません。唯一の方法はページをリロードすることですが、やりたくありません。

ウェブサイトはこちら

ライブデモはこちら

   <!-- 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"; 
                        });
                    }
                }
            });
        }
    });
});

4

2 に答える 2

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);
于 2013-09-06T06:35:50.437 に答える