Хочу создать отдельную страничку. На которую будет заходить по клику, оформить заказ. Там нужно буддет ввести имя, фамилию, например способ оплаты выбрать, и способ доставки, а так же мыло. И чтобы оно либо на почту(Так прощу) Или на сервер(так сложнее) Отправляло данные. То что он выбрал в корзине+ его данные. Это реально сделать даже используя пхп?
<script>
(function(e){
e.closest = e.closest || function(css){
var node = this;
while (node) {
if (node.matches(css)) return node;
else node = node.parentElement;
}
return null;
}
})(Element.prototype);
var d = document,
itemBox = d.querySelectorAll('.item_box'), // блок каждого товара
cartCont = d.getElementById('cart_content'); // блок вывода данных корзины
// Функция кроссбраузерной установка обработчика событий
function addEvent(elem, type, handler) {
if (elem.addEventListener) {
elem.addEventListener(type, handler, false);
} else {
elem.attachEvent('on' + type, function() {
handler.call(elem);
});
}
return false;
}
// Получаем данные из LocalStorage
function getCartData() {
return JSON.parse(localStorage.getItem('cart'));
}
// Записываем данные в LocalStorage
function setCartData(o) {
localStorage.setItem('cart', JSON.stringify(o));
return false;
}
// Добавляем товар в корзину
function addToCart(e) {
this.disabled = true; // блокируем кнопку на время операции с корзиной
var cartData = getCartData() || {}, // получаем данные корзины или создаём новый объект, если данных еще нет
parentBox = this.parentNode, // родительский элемент кнопки "Добавить в корзину"
itemId = this.getAttribute('data-id'), // ID товара
itemTitle = parentBox.querySelector('.item_title').innerHTML, // название товара
itemPrice = parentBox.querySelector('.item_price').innerHTML, // стоимость товара
itemAmount = +(parentBox.querySelector('.amount').value || 1); // Кол-во
if (!itemId) {
var param = parentBox.querySelector('input[type=radio]:checked');
if (!param) {
alert('Выберите тип товара');
return false;
}
itemId = param.value;
itemTitle += ' (' + param.getAttribute('data-param') + ')';
}
/* ------------- */
if (cartData.hasOwnProperty(itemId)) {
cartData[itemId][2] += itemAmount; // Тут подставили переменную и если тексбокс пуст, то +1
} else {
cartData[itemId] = [itemTitle, itemPrice, itemAmount]; // И тут подставили переменную
}
if (!setCartData(cartData)) { // Обновляем данные в LocalStorage
this.disabled = false; // разблокируем кнопку после обновления LS
}
var cartData = getCartData(), // вытаскиваем все данные корзины
totalItems = '',
totalCount = 0,
totalSum = 0;
// если что-то в корзине уже есть, начинаем формировать данные для вывода
if (cartData !== null) {
totalItems = '<table class="shopping_list"><tr><th>Наименование</th><th>Цена</th><th>Кол-во</th><th></th></tr>';
for (var items in cartData) {
totalItems += '<tr>';
for (var i = 0; i < cartData[items].length; i++) {
if (i == 1) {
totalItems += '<td align="right">' + cartData[items][i] + '</td>';
} else {
totalItems += '<td>' + cartData[items][i] + '</td>';
};
}
totalSum += cartData[items][1] * cartData[items][2];
totalCount += cartData[items][2];
totalItems += '<td><span class="del_item" data-id="' + items + '"></span></td>';
totalItems += '</tr>';
}
totalItems += '<tr><td><strong>Итого</strong></td><td align="right"><span id="total_sum">' + totalSum + '</span>$</td><td><span id="total_count">' + totalCount + '</span> шт.</td><td></td></tr>';
totalItems += '</table>';
cartCont.innerHTML = totalItems;
} else {
cartCont.innerHTML = 'В корзине пусто!';
}
return false;
}
// Устанавливаем обработчик события на каждую кнопку "Добавить в корзину"
for (var i = 0; i < itemBox.length; i++) {
addEvent(itemBox[i].querySelector('.add_item'), 'click', addToCart);
}
// Открываем корзину со списком добавленных товаров
function openCart(e) {
var cartData = getCartData(), // вытаскиваем все данные корзины
totalItems = '',
totalCount = 0,
totalSum = 0;
// если что-то в корзине уже есть, начинаем формировать данные для вывода
if (cartData !== null) {
totalItems = '<table class="shopping_list"><tr><th>Наименование</th><th>Цена</th><th>Кол-во</th><th></th></tr>';
for (var items in cartData) {
totalItems += '<tr>';
for (var i = 0; i < cartData[items].length; i++) {
if (i == 1) {
totalItems += '<td align="right">' + cartData[items][i] + '</td>';
} else {
totalItems += '<td>' + cartData[items][i] + '</td>';
};
}
totalSum += cartData[items][1] * cartData[items][2];
totalCount += cartData[items][2];
totalItems += '<td><span class="del_item" data-id="' + items + '"></span></td>';
totalItems += '</tr>';
}
totalItems += '<tr><td><strong>Итого</strong></td><td align="right"><span id="total_sum">' + totalSum + '</span>$</td><td><span id="total_count">' + totalCount + '</span> шт.</td><td></td></tr>';
totalItems += '</table>';
cartCont.innerHTML = totalItems;
} else {
cartCont.innerHTML = 'В корзине пусто!';
}
return false;
}
/* Открыть корзину */
addEvent(d.getElementById('checkout'), 'click', openCart);
/* Очистить корзину */
addEvent(d.getElementById('clear_cart'), 'click', function(e) {
localStorage.removeItem('cart');
cartCont.innerHTML = 'Корзина очишена.';
});
[].forEach.call(document.querySelectorAll('.item_box input[type=radio]'), function(inp){
addEvent(inp, 'change', function(){
var parentBox = this.closest('.item_box');
parentBox.querySelector('.item_price').textContent = this.getAttribute('data-price');
parentBox.querySelector('.amount').value = 1;
})
});
</script>