javascript - 使用 jquery 和 .submit 捕获表单提交后清除表单

标签 javascript jquery

经过大量研究,我仍然无法在提交表单后清除表单并显示“消息已提交”消息。

HTML:

<!DOCTYPE html>
<html lang="es">
  <head>
    <!--some code -->

  </head>
  <body id="page-top">
    <!-- Navigation -->
    </nav>

    <header class="masthead text-center text-white d-flex">
    <!-- SOME CODE -->
    </header>

      <!-- Formulario de Contacto -->

      <section id="contact" data-delimiter="1">        
          <div class="row">
            <div class="col-lg-6">
              <h3 class="heading h3 mb-4">Escríbanos</h3>
              <form class="needs-validation" id="contact-form" method="POST" action="contact.php" role="form" novalidate>
                <div class="messages"></div>
                <div class="row">
                  <div class="col-12">
                    <div class="form-group">
                      <input name="name" class="form-control formu" type="text" id="name" placeholder="Nombre" maxlength="50" required data-error="Es necesario un nombre">
                        <div class="invalid-feedback">Es necesario un nombre.
                        </div>
                    </div>
                  </div>
                </div>
                <div class="row">
                  <div class="col-12">
                    <div class="form-group">
                      <input name="email" class="form-control formu" type="email" id="email" placeholder="Correo electrónico" required data-error="Es necesario un correo electrónico">
                        <div class="invalid-feedback">Es necesario un correo electrónico.
                        </div>
                    </div>
                  </div>
                </div>
                <div class="row">
                  <div class="col-12">
                    <div class="form-group">
                      <textarea name="message" class="form-control formu" rows="5" id="message" placeholder="Su mensaje" required></textarea>
                        <div class="invalid-feedback">Es necesario su mensaje.
                        </div>
                    </div>
                  </div>
                </div>
                <div class="mt-4">
                  <button type="submit" value="Enviar" class="btn btn-primary px-4" id="btn_enviar">Enviar</button>
                </div>                
              </form>               
            </div>            
          </div>
        </div>
      </section>
  </body>
</html>

这是我的 contact.js

$(function () {

    $('#contact-form').validator();

    $('#contact-form').on('submit', function (e) {    

        if (!e.isDefaultPrevented()) {
            var url = "contact.php";

            $.ajax({
                type: "POST",
                url: url,
                data: $(this).serialize(),
                success: function (data)
                {
                    var messageAlert = 'alert-' + data.type;
                    var messageText = data.message;
                    $('#contact-form')[0].reset();
                    //$("#contact-form").trigger("reset");
                    //$("#contact-form").get(0).reset();    
                }
            });
            return false;
        }            
    })
});

我对此真的很困惑。它应该与我的 .js 文件中的 success 函数一起使用,并且我尝试了不同的方法,例如触发器(),重置()。 点击提交按钮后,信息已发送,但发送数据时未显示成功消息。

最佳答案

您有什么理由不这样做吗?

$('#contact-form').on('submit', function (e) {  
    e.preventDefault();

您专门检查以确保它尚未完成,然后进行 ajax 调用,但这实际上没有意义。提交表单后,您的页面会刷新,因此您的消息永远不会显示。

添加e.preventDefault()

然后更改此:

if (!e.isDefaultPrevented()) {

对此:

if (e.isDefaultPrevented()) {

关于javascript - 使用 jquery 和 .submit 捕获表单提交后清除表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54357980/

相关文章:

jquery - 在 IE7 中的服务器上呈现时出现奇怪的 JQuery 验证错误 ('this.0.form' 为空或不是对象)

javascript - 如何在 Javascript 中编写 PHP 变量?

javascript - Html 对象标签 : access element in an html page

javascript - 从 Javascript 中的源属性过滤

javascript - 无法在光标位置的文本框中插入符号

javascript - HTML5 Canvas -动圈

javascript - 列表上的倒计时器为每个列表项提供相同的计时器结果

javascript - 如何在 JS 中模拟 $(this)[0].files?

javascript - 在 React Router v6 中将 Props 传递给 Outlet

javascript - 使 CSS 大小适应特定的移动屏幕