【问题标题】:Looking for script that changes form div upon form submission without refreshing page寻找在表单提交时更改表单 div 而不刷新页面的脚本
【发布时间】:2011-01-10 11:47:40
【问题描述】:

我在 HTML 页面上有一个电子邮件表单,一旦您单击提交以发送表单提交,我希望 DIV“表单”更新或被替换为说“谢谢”消息。

尝试谷歌搜索,但没有找到任何我可以使用的具体内容。

有什么想法吗?

谢谢

【问题讨论】:

  • 我用你的例子更新了我的答案:)

标签: javascript jquery html forms webforms


【解决方案1】:

你可以使用jQuery.ajax方法:

$.ajax({
  url: 'ajax/send_mail.php',
  data: "message="+$('#some_field').val(),
  success: function(data) {
    //replace form (form is in div <div id="form"><form>Form data</form></form>)
    $('div#form').html('<p>Thank You!<p>');
    //or $('div#form').html(data); if you are returning message from send_mail.php
  }
});

如果你有问题,我可以给你写一个完整的脚本(我只是有心情,有一些空闲时间):)

更新:

基本上就是这样。

将此复制/粘贴为您的表单:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hr-HR" lang="hr-HR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Title</title>
<script type="text/JavaScript"  charset="utf-8" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
 $('#submit').click(function(){
  $.ajax({
   type: "GET",
    url: 'sendit.php',
    dataType: 'json',
    data: $('form#mail_form').serialize(),
    success: function(data) {
    if(data.success==1){
   $('div#form').html(data.message);
   }
    }
  });
  return false;
 });
});
</script>
</head>
<body>
 <div id="form">
  <form id="mail_form">
  <div>
   <input type="text" name="subject" id="subject"/>
  </div>
  <div>
   <textarea name="message" id="message"></textarea>
  </div>
  <div>
   <input type="submit" name="submit" id="submit" value="Send"/>
  </div>
  </form>
 </div>
</body>
</html>

在 sendit.php 时复制/粘贴: 您必须验证此数据

//do stuff, send mail, save to database,...
 $data['success']=1;
 $data['message']='Thank You!';
 echo json_encode($data);

【讨论】:

  • 您好,谢谢。随意做一个完整的脚本,因为这似乎是迄今为止最好的方法:)
【解决方案2】:

查看 jQuery 的replaceWith():

$('div.the-form').replaceWith('<div class="thankyou">Thanks for your submission.</div>');

【讨论】:

    【解决方案3】:

    您可以进行 AJAX POST 并在回调中显示“感谢消息”(jQuery 可能会有所帮助)。

    代码可能如下所示:

    $.post('test.do', function(data) {
      $('.confirmation').show();
    });
    

    【讨论】:

      【解决方案4】:

      创建一个 id 为“thankyouDiv”的新 div,并初始设置其 style="display:none;"。这个 div 应该包含你的感谢信息 在提交表单时,首先隐藏包含电子邮件表单的 div,并通过更改 style="display:block;" 来显示“thankyouDiv”。之后您可以提交表单。

      希望这能解决您的问题

      【讨论】:

        【解决方案5】:

        您可以使用 jquery / javascript 隐藏表单,并在表单提交时显示感谢消息 div。 编辑:尝试以下操作:

            <html>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        <script>
        $(document).ready(function (){
         $("#button").click(function () {
            $("form").hide();
            $("div").show();
            return false;
         });
         });
        </script>
        <form>
        form data<br/>
        <button id="button">click me</button>
        </form>
        <div style="display: none">
        thank you
        </div>
        </html>
        

        【讨论】:

        • 嗨,我就是这么想的。有什么脚本可以使用,因为我对它了解不多?
        【解决方案6】:

        假设,这是您的标记...

        ...
        ..


        这是你的 jQuery 代码...

        $(文档).ready(函数(){ $('emailform').submit(function(){ // 序列化你的表单来获取数据,做你想做的... // 现在,在这里做 AJAX 的事情... $.ajax({ 类型:'POST', 网址:yourscript.php, data: data, // 序列化数据,例如 成功:函数(){ // 这是成功时执行的 $('emailform').hide(); // 表单会淡出 $('formcontainer').html('谢谢,消息已发送') } }); 返回假; // 这会阻止表单真正提交 }); });



        让我知道结果:)

        【讨论】:

          猜你喜欢
          • 2016-02-03
          • 1970-01-01
          • 1970-01-01
          • 2017-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多