jQuery - 用'thanks message'替换联系表单

时间:2011-10-05 12:03:25

标签: php javascript jquery jquery-validate

我有一个执行PHP操作的联系表单。联系表单与jQuery中的验证引擎相关联。如果正确发送了messege,我只需要包含带有感谢消息的PHP文件 - require_once('success.php');。发送消息后,我想用感谢信息替换联系表格而不重新加载整个页面。请给我一些建议如何做到这一点。 这是我的HTML:

<div id="contactForm">
<form id="expertForm" class="formular" method="post" action="send.php">
    <fieldset>
        <label>
            <input name="email"
                   id="email"
                   class="required email"
                   type="text"
                   size="40"/>
        </label>

        <p>
            <textarea name="body" id="body" rows="5" cols="50" class="required"></textarea>
        </p>
    </fieldset>
    <input class="submit"
           type="image"
           src="../images/btn-send.png"/>
</form>
</div>
<script type="text/javascript">
  $("#expertForm").validate();
</script>

send.php我有:

if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    require_once('success.php');
}

3 个答案:

答案 0 :(得分:3)

你最好给我们一些代码,以便我们可以提供帮助。

以下是理论上的方法:使用jquery success [ref]调用的ajax事件:

$.ajax({
  url: "test.html",
  context: document.body,
  success: function(){
    $("#myformdiv").html("Thanks!");
  }
});

假设您的HTML标记类似于:

<div id="myformdiv">
   <form> 
     <!-- form code here -->
   </form>
</div>

答案 1 :(得分:3)

您可以在http://jsfiddle.net/v7MJA/1/

看到几乎工作演示
$(function(){
    $("#expertForm").submit(function(e){
        e.preventDefault();
        if(!$(this).validate().form()) return false;
        $.ajax({
            url:$(this).attr('action'),
            data:$(this).serialize(),
            type:'post',
            success:function(msg){
                $("#expertForm").replaceWith(msg);
            }
        });
    });
});

答案 2 :(得分:2)

假设我已正确理解您的问题,您可以使用replaceWith方法将匹配的元素替换为指定的内容:

$("#yourForm").replaceWith("<p>Thanks!</p>");

我假设你正在异步地将表单数据发送到服务器,所以你可以在回调中运行上面的代码:

$.post("yourScript.php", function() {
    $("#yourForm").replaceWith("<p>Thanks!</p>");
});