Вывод сообщения после отправки формы

184
11 сентября 2018, 20:50

Подскажите как вывести сообщение об успешной отправке формы под кнопкой?

<form action="#" class="form">
<div class="form__field">
    <input type="text" name="name" placeholder="Имя*" required />
</div>
<div class="form__field">
    <input type="email" name="name" placeholder="E-Mail" />
    <span class="form__error">Это поле должно содержать E-Mail в формате no-name@mail.com</span>
</div>
<div class="form__field">
    <input type="tel" name="name" placeholder="Телефон" pattern="[\+]\d{1}\s[\(]\d{3}[\)]\s\d{3}[\-]\d{2}[\-]\d{2}" minlength="18" maxlength="18" />
    <span class="form__error">Это поле должно содержать телефон в формате +7 (123) 456-78-90</span>
</div>
<div class="form__field">
    <input type="url" name="name" placeholder="Ваш сайт" />
    <span class="form__error">Это поле должно содержать URL в формате http://mysite.ru</span>
</div>
<button class="btn btn-primary" type="submit">Submit</button>
<div class="info container"></div>
</form>
Answer 1

Подскажите как вывести сообщение об успешной отправке формы под кнопкой?

Вот отправка и проверка:

var f = document.querySelector('form') 
 
f.addEventListener('submit', function(e) { 
  e.preventDefault(); 
  var data = new FormData(this) // Сборка формы  
  var url = 'https://jsonplaceholder.typicode.com/posts' 
  fetch(url, { 
      method: 'post', 
      headers: { 
        "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" 
      }, 
      body: data // Отправка самой формы 
    }) 
    .then(response => response.json()) 
    .then((json) => { // Ответ 
      if (json.id === 101) { // Для примера проверка пройдена если id === 101 
        // Добавление поля 
        var info = document.querySelector('.info') 
        info.innerText = 'Удачно Отправлено' 
      } 
      // Дебаг узнать что прошла форма 
      console.log(json) 
    }) 
    .catch(err => console.log(err)); 
})
<form action="#" class="form"> 
  <div class="form__field"> 
    <input type="text" name="name" placeholder="Имя*" required /> 
  </div> 
  <div class="form__field"> 
    <input type="email" name="name" placeholder="E-Mail" /> 
    <span class="form__error">Это поле должно содержать E-Mail в формате no-name@mail.com</span> 
  </div> 
  <div class="form__field"> 
    <input type="tel" name="name" placeholder="Телефон" pattern="[\+]\d{1}\s[\(]\d{3}[\)]\s\d{3}[\-]\d{2}[\-]\d{2}" minlength="18" maxlength="18" /> 
    <span class="form__error">Это поле должно содержать телефон в формате +7 (123) 456-78-90</span> 
  </div> 
  <div class="form__field"> 
    <input type="url" name="name" placeholder="Ваш сайт" /> 
    <span class="form__error">Это поле должно содержать URL в формате http://mysite.ru</span> 
  </div> 
 
  <button class="btn btn-primary" type="submit">Submit</button> 
  <div class="info container"></div> 
</form>

Answer 2

<form action="#" class="form" 
  onsubmit="document.querySelector('.info.container').textContent = 'Успешно отправлено.';"  
  target="formFrame"> 
  <iframe name="formFrame" style="display:none;"></iframe> 
 
<div class="form__field"> 
    <input type="text" name="name" placeholder="Имя*"  /> 
</div> 
<div class="form__field"> 
    <input type="email" name="name" placeholder="E-Mail" /> 
    <span class="form__error">Это поле должно содержать E-Mail в формате no-name@mail.com</span> 
</div> 
<div class="form__field"> 
    <input type="tel" name="name" placeholder="Телефон"  maxlength="18" /> 
    <span class="form__error">Это поле должно содержать телефон в формате +7 (123) 456-78-90</span> 
</div> 
<div class="form__field"> 
    <input type="text" name="name" placeholder="Ваш сайт" /> 
    <span class="form__error">Это поле должно содержать URL в формате http://mysite.ru</span> 
</div> 
 
<button class="btn btn-primary" type="submit">Submit</button> 
<div class="info container"></div> 
</form>

Answer 3

<div class="info container">Текст</div> сделать display: none; Если используется AJAX то он возвращает с сервера ответ. В ответе, если success можно задавать этому контейнеру display:block; a с помощью SetTimeout через несколько секунд убирать сообщение, задавая ему снова display:none;

П.С. в этом случае сообщение будет выводиться не просто по клику, а лишь если форма реально отправлена и с сервера пришел ответ. А если хотите чтоб в любом случае была надпись - вешайте событие на клик.

READ ALSO
Не могу выставить по центру див

Не могу выставить по центру див

Сижу уже 2 часа не могу блок по центру в диве слайдера поставитьПроблема в том , что я уже все перепробовал

197
Как сверстать данные кнопки?

Как сверстать данные кнопки?

radiobutton или просто div'ами?

192
Табы Javascript

Табы Javascript

Хочу сделать табы возник вопрос как мне сравнить индексы массивов двух классов чтобы по нужному клику выбирался нужный блок, тут я вписываю...

179
init several dropzone

init several dropzone

Как инициализировать множество одинаковых dropzone на одной страничке, подскажите пожалуйста

182