Захват содержимого формы до ее отправки

204
23 марта 2018, 14:19

Дано: Страница корзины товаров, в ней форма "Имя" "Телефон" "Email"

Задача: Сохранять содержимое формы даже если не была нажата кнопка оформления заказа. Сохранять только те поля, где заполнен хоть один символ.

Пример: Человек добавил товар в корзину и перешел в нее, заполнил имя и телефон и закрыл окно браузера. Нужно, чтобы имя и телефон где-то сохранились.** *Где - неважно пока - как пример возьмем .txt файл в корне.***

txt, видимо, плохой пример. Давайте, конкретизируем: Пользователь кликает по полю input, вводит туда >0 символов, далее кликает куда либо вне этого поля, в этот момент символы которые были в поле должны сохраняться в любое доступное мне место.

Update:

Коллеги, у меня вопрос не как пользователю сохранить куки с введенной информацией, а как мне, как админу сайта получить содержимое заполненных полей, если форма не была отправлена нажатием кнопки "Оформить заказ". Или принудительно данные копировать из этой формы в какую-то скрытую и отправлять ее в какой-то обработчик, либо фиксировать изменения текста в полях как-то.

Answer 1

Можно сохранить значения в cookie на 1 неделю, и при последующих загрузках страницы снова заполнять поля прошлыми значениями

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input class='catching_input' name='Name' id='name' placeholder='Имя'>
<input class='catching_input'name='Phone' id='phone' placeholder='Телефон'>
<input class='catching_input'name='Email' id='email' placeholder='E-mail'>
</form>

JS

$('.catching_input').on('change',function() {
    var input_id = $(this).attr('id');
    var input_value = $(this).val();
  var d = new Date();
  d.setTime(d.getTime()+(7*24*60*60*1000));
  document.cookie = input_id + "="+input_value+"; expires="+d.toGMTString()+"; path=/";
});
$( document ).ready(function() {
    $('.catching_input').each(function(){
        var prev_val = getCookie($(this).attr('id'));
      if (prev_val) {
        $(this).val(prev_val);
      }
    })
});
function getCookie(name) {
  var matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : undefined;
}

Запустить пример

Answer 2

Можно сохранять данные в localStorage при изменении значений input-ов. А при загрузке страницы, например, подставлять сохранённые значения:

HTML:

<form id="form">
  Имя: <input name="name"/>
  Телефон: <input name="phone"/>
  Email: <input name="email"/>
</form>

JS:

$(function() {
  var $formInputs = $("#form input");
  $formInputs.each(function() {
    this.value = localStorage.getItem($(this).attr("name"));
  });
  $formInputs.on("change", function() {
    localStorage.setItem($(this).attr("name"), this.value);
  });
});

Полный пример в JSFiddle

READ ALSO
Отсортировать массив js

Отсортировать массив js

Как отсортировать такой массив с эелементами списка по значению по алфавиту?

412
Работа method borrowing в JS

Работа method borrowing в JS

Вопрос возникает на счёт данного утверждения: При помощи call можно легко взять метод одного объекта, в том числе встроенного, и вызвать в контексте...

199
Не работает ng-repeat AngularJS

Не работает ng-repeat AngularJS

Почему не работает вывод?

240
Вывод статей в react

Вывод статей в react

Доброго времениТолько начал изучать React

245