Добавить новый элемент с такой же формой в существующее хранилище сеансов - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть форма, которая вызывается через модальный режим в любое время, когда пользователь нажимает кнопку. Он используется здесь: http://fromlandmark.com/projects/VacuumStore/product.php

Каждый раз, когда я вызывал форму с помощью кнопки «Remplir ...», я добавляю в сеанс хранение элемента.

Проблема в том, что позже яхотите добавить еще один элемент с той же формой, и sessionStorage обновляется с новыми значениями. Я хочу добавить новый элемент, чтобы иметь возможность отобразить список корзины покупок позже.

Это фрагмент кода, который хранит значения входов и добавляет в хранилище:

$('.submit-message').click(function (e) {
  e.preventDefault();
  //message
  var productID = $('.modal').attr('product-name');
  var productImg = $('.product-image').attr('src');
  var message = $('#message').val();

  // from inputs
  var fromName = $('#from-name-input').val();
  var fromLastName = $('#from-last-name-input').val();
  var fromAddress = $('#from-address-input').val();
  var fromCountry = $('#from-country-input').val();
  var fromCity = $('#from-city-input').val();
  var fromPostalCode = $('#from-postalcode-input').val();
  var fromPhone = $('#from-phone-input').val();

  // to inputs
  var toName = $('#to-name-input').val();
  var toLastName = $('#to-last-name-input').val();
  var toAddress = $('#to-address-input').val();
  var toCountry = $('#to-country-input').val();
  var toCity = $('#to-city-input').val();
  var toPostalCode = $('#to-postalcode-input').val();
  var toPhone = $('#to-phone-input').val();

  let productInfo = {
    FromName: fromName,
    FromLastName : fromLastName, 
    FromAdress: fromAddress,
    FromCountry: fromCountry,
    FromCity: fromCity,
    FromPostCode: fromPostalCode,
    FromPhone : fromPhone,
    FromName: toName,
    ToLastName : toLastName, 
    ToAdress: toAddress,
    ToCountry: toCountry,
    ToCity: toCity,
    ToPostCode: toPostalCode,
    ToPhone : toPhone,

    Message: message,
    Product: productImg,
    ProductID : productID

  };

  sessionStorage.setItem('productList', JSON.stringify(productInfo));
  var storedProductList = JSON.parse(sessionStorage.getItem('productList')); 
  })

1 Ответ

1 голос
/ 02 ноября 2019

Сохранение списка продуктов в хранилище сеансов в виде массива JSON.

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

var storedProductList = JSON.parse(
  sessionStorage.getItem('productList')) || [];

ДобавитьproductInfo в этот массив.

storedProductList.push(productInfo);

Наконец, сохраните это в хранилище сеанса.

sessionStorage.setItem('productList', 
JSON.stringify(storedProductList));
...