一页联系表格PHP&脚本

时间:2015-10-10 23:15:35

标签: php jquery html forms overlay

我正在创建一个单页网站,我想在一个部分添加一个联系表单。所以我正在使用PHP,事情是,我似乎无法找到任何基本预制表单,这些表单不会打开新网页或在您提交后将您指向新页面。我想保留这一页,所以我希望一旦表格中的所有内容都正确并且已经提交,就会出现叠加层。没有弹出窗口或重定向。这可能需要jQuery,但我不知道如何把它放入,所以它实际上是这样做的。

以下是我在HTML中设置表单的方法:

 <form action="mail.php" method="post" enctype="multipart/form-data" >
      <label></label>
        <input name="name" required placeholder="Your Name">
        <label></label>
        <input name="email" type="email" required placeholder="Your Email">
        <label></label>
        <textarea name="message" cols="20" rows="5" required placeholder="Message"></textarea>     
       <input id="submit" name="submit" type="submit" value="Submit">

    </form>

这是mail.php

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: Website'; 
$to = 'email@emailhere.com'; 
$subject = 'Email Inquiry';

$body = "From: $name\n E-Mail: $email\n Message:\n $message";?>

<?php
if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) { 
echo '<p>Thank you for your message! </p>';
} else { 
echo '<p>An error occurred. Try sending your message again.</p>'; }}?>

现在,我希望能够删除感谢消息的echo,并将其替换为jQuery代码以进行覆盖。

$(document).ready(function() {
    $("#overlay").show();
    });

我错过了该功能的一部分,因为它现在只是在页面准备就绪时显示。但我不知道在哪里放置它/如何使用这个PHP。

我的困惑是我不确定当你点击提交时PHP告诉它去哪个空白页面,所以我不知道在哪里停止并启动脚本。我也不知道如何将这一切正确地融合在一起。它是在PHP或脚本中我检查所有元素之前它可以调用操作&#34;谢谢覆盖&#34;。我真的不知道从这里走向何方。

非常感谢你的时间。我自己也在学习很多东西,所以我的知识很不完整。

如果我能帮忙清理一下,请告诉我。

-RJ

3 个答案:

答案 0 :(得分:0)

Hava看看jQuery Ajax。通常,您通过转到另一个页面来由服务器抛出数据,因此您执行“同步”请求。 Ajax技术使您能够在请求发出时保持在页面上,这是一个“异步”请求。 JQuery使Ajax请求更加简单。祝你好运;)

答案 1 :(得分:0)

尝试在onclick按钮上添加#submit个活动,并在表单

中使用Javascript XMLHttpRequest对象代替action="mail.php"

答案 2 :(得分:0)

这是一个例子,希望它可以推动你走正确的道路:)

在提交按钮

后立即添加此字符串
<span class="status"></span>

PHP

if($mail_sent){
  echo "<span class='notice'>Your message has been sent, thank you.</span>";
  exit;
}else{
  echo "<span class='error'>We couldn't send your message please try again, thank you.</span>";
  exit;
}

JS部分显示错误

jQuery(function($) {
    $("#contact-form").submit(function(){
        return false;
    })
  $("#contact-form input[type=submit]").click(function(event){
        var formerror = false;

        $(this).attr('disabled', 'disabled').css({'cursor': 'auto', 'opacity': 0.5});
        $('.status').fadeIn('normal').html('Loading please wait...');

        $(this).closest("form").find("input, textarea").each(function(){
            error = false;
            switch($(this).attr('id')){
                case 'name':
                    if($(this).val().match(/^[a-zA-Z\ \']+$/) == null || $(this).val() == "Name")
                        error = true;
                    else
                        error = false;

                    break;

                case 'email': 
                    if($(this).val().match(/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/) == null)
                        error = true;
                    else
                        error = false;

                    break;

                case 'message':
                    if($(this).val().length < 4 || $(this).val() == "Type your message")
                        error = true;
                    else
                        error = false;

                    break;
            }
            if(error){
                $(this).css('border-color', '#f00');
                formerror = true;
            }
        });

        if(formerror){
            $('.status').fadeOut('normal', 
                                function(){
                                    $(this).html("One or more required fields are missing or invalid, please correct and resend.")
                                             .addClass("error");
                                }
                            ).fadeIn();

            $(this).removeAttr('disabled').css({'cursor': 'pointer', 'opacity': 1});

            event.preventDefault();
        }else{

            //get teh link
            $.post( "contact.php", { name: $('#name').val(), 
                                         email: $('#email').val(), 
                                         website: $('#website').val(), 
                                         message: $('#message').val() 
                                        })
            .done(function( data ) {
                $('.status').removeClass('error').fadeIn('normal', function(){$(this).html(data)});
                $("#contact-form input[type=submit]").removeAttr('disabled').css({'opacity': 1, 'cursor': 'pointer'});
            });

            event.preventDefault();
        }
    });
});