javascript - 发送表格后,框显示为红色,但表格已发送。这是我的代码

标签 javascript jquery css

这是我的代码,在完成表单并按下提交按钮后,表单被正确发送,但字段变成红色,就好像它们没有完成一样。我想知道这段代码有什么问题或我必须更改什么。我在互联网上找到了几个选项,但我无法解决问题。

(function($) {
  'use strict';

  var form = $('.contact__form'),
    message = $('.contact__msg'),
    form_data;

  // Success function
  function done_func(response) {
    message.fadeIn().removeClass('alert-danger').addClass('alert-success');
    message.text(response);
    setTimeout(function() {
      message.fadeOut();
    }, 3000);
    form.find('input:not([type="submit"]), textarea').val('');
  }

  // fail function
  function fail_func(data) {
    message.fadeIn().removeClass('alert-success').addClass('alert-success');
    message.text(data.responseText);
    setTimeout(function() {
      message.fadeOut();
    }, 3000);
  }

  form.submit(function(e) {
    e.preventDefault();
    form_data = $(this).serialize();
    $.ajax({
        type: 'POST',
        url: form.attr('action'),
        data: form_data
      })
      .done(done_func)
      .fail(fail_func);
  });

})(jQuery);
/* ------- */


/* CONTACT */


/* ------- */

#contact {
  background: #1d1e22;
  padding: 6em 1em 4em;
}

.contact {
  background: #1d1e22;
  border-bottom-left-radius: 4px;
  border-bottom-right-radius: 4px;
}

.contact h3 {
  margin: 0 0 1rem 0;
}


/* ---- */


/* FORM */


/* ---- */

input {
  width: 100%;
  margin: 10px 0;
  background: rgba(0, 0, 0, 0);
  border: none;
  border-bottom: 1px solid #5A5A5A;
  color: #fff;
}

 ::-webkit-input-placeholder {
  color: #EAEAEA;
  font-size: 12px;
  letter-spacing: 2px;
}

.contact form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: 20px;
}

.contact form label {
  display: block;
}

.contact form p {
  margin: 0;
}

.contact form .full {
  grid-column: 1 / 3;
}

.contact form button,
.contact form input,
.contact form textarea {
  width: 100%;
  padding: 1em;
  border-radius: 4px;
}

.contact form textarea {
  resize: none;
  width: 100%;
  margin: 10px 0;
  background: rgba(0, 0, 0, 0);
  border: none;
  border-bottom: 1px solid #5A5A5A;
  color: #fff;
}

.contact form button {
  background: #BB4F51;
  border: 0;
  color: #e4e4e4;
  text-transform: uppercase;
  font-size: 14px;
  font-weight: bold;
}

.contact form button:hover,
.contact form button:focus {
  background: #8F3D3F;
  color: #ffffff;
  outline: 0;
  transition: background-color 2s ease-out;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- CONTACT FORM -->
<div class="contact">
  <form class="contact__form" method="post" action="mail.php">
    <p>
      <input type="text" name="name" class="form-control" id="name" placeholder="Nume" required data-error="Introduceți numele.">

    </p>

    <p>

      <input type="text" name="phone" class="form-control" id="phone" placeholder="Telefon" required data-error="Introduceți numarul de telefon.">

    </p>


    <p>
      <input type="email" name="email" class="form-control" id="email" placeholder="E-mail (Correo Electronico)" required data-error="Introduceți un e-mail.">
    </p>

    <p>

      <input type="text" name="subject" class="form-control" id="subject" placeholder="Reclamatie / Informatii" required data-error="Introduceți un subiect.">
    </p>

    <p class="full">
      <textarea name="message" rows="5" id="msg" placeholder="Mesaj / Reclamatie" required data-error="Scrieți un mesaj."></textarea>
    </p>

    <p class="full">
      <button type="submit" id="submit" class="btn btn-success">Trimite</button>
    </p>


    <div class="col-12">
      <div class="alert alert-success contact__msg" style="display: none" role="alert">
        <i class="fa fa-check"></i>Mesajul dumneavostră a fost trimis cu succes.<br />
      </div>
    </div>


  </form>
</div>

最佳答案

由于您在表单输入元素中使用了属性“required”,并且在函数 done_func() 成功操作 ajax POST 后将值设置为“”(一个空值但不是 null),这会导致田野变红似的。 解决方案是尝试“重置”字段而不是设置“”值。

例如:[input type="reset"id="x"...] 然后通过 jQuery 触发它。

关于javascript - 发送表格后,框显示为红色,但表格已发送。这是我的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52636006/

相关文章:

javascript - 检索ajax post请求发送的数据

javascript - 使用 select 选项仅显示第一个 <td> 的所需值 =""的表行

javascript - 如何通过 jquery 激活链接?

css - Nivo slider css 下拉菜单冲突

javascript - 有没有办法将javascript变量传递给html.erb中的ruby方法

javascript - 将响应 Request.post token 保存在变量中

javascript - 如何在 jQuery 中为标签创建点击事件?

c# - 根据 Visual Studio 2010,jQuery 函数 "undefined"

javascript - 为什么选择更改方法不起作用?

css - float 的 div 意外地清除了之前的 float