jQuery EasyUI Arrastrar y soltar -Crear un carrito de compras con arrastrar y soltar
Si puede implementar fácilmente arrastrar y soltar en su aplicación web, sabrá que es algo especial. Con jQuery EasyUI, podemos implementar fácilmente la funcionalidad de arrastrar y soltar en aplicaciones web.
En este tutorial, le mostraremos cómo crear una página de carrito de compras que permita a los usuarios arrastrar y soltar los productos que desean comprar. Los artículos y precios de la cesta se actualizarán.
Mostrar los productos en la página
<ul class="products"> <li> <a href="../index.html" class="item"> <img src="images/shirt1.gif.html"/> <div> <p>Balloon</p> <p>Price:$25</p> </div> </a> </li> <li> <a href="../index.html" class="item"> <img src="images/shirt2.gif.html"/> <div> <p>Feeling</p> <p>Price:$25</p> </div> </a> </li> <!-- other products --> </ul>
Como puede ver en el código anterior, agregamos un elemento <ul> que contiene algunos elementos <li> para mostrar los productos. Todos los productos tienen atributos de nombre y precio, que se incluyen en elementos <p>.
Crear el carrito de compras
<div class="cart"> <h1>Shopping Cart</h1> <table id="cartcontent" style="width:300px;height:auto;"> <thead> <tr> <th field="name" width=140>Name</th> <th field="quantity" width=60 align="right">Quantity</th> <th field="price" width=60 align="right">Price</th> </tr> </thead> </table> <p class="total">Total: $0</p> <h2>Drop here to add to cart</h2> </div>
Usamos un DataGrid (datagrid) para mostrar los artículos de la cesta de compras.
Arrastrar productos clonados
$('.item').draggable({
revert:true,
proxy:'clone',
onStartDrag:function(){
$(this).draggable('options').cursor = 'not-allowed';
$(this).draggable('proxy').css('z-index',10);
},
onStopDrag:function(){
$(this).draggable('options').cursor='move';
}
});
Tenga en cuenta que establecemos el valor de la propiedad draggable de 'proxy' a 'clone', por lo que el elemento arrastrado se generará mediante clonación.
Soltar los productos seleccionados en el carrito
$('.cart').droppable({
onDragEnter:function(e,source){
$(source).draggable('options').cursor='auto';
},
onDragLeave:function(e,source){
$(source).draggable('options').cursor='not-allowed';
},
onDrop:function(e,source){
var name = $(source).find('p:eq(0)').html();
var price = $(source).find('p:eq(1)').html();
addProduct(name, parseFloat(price.split('$')[1]));
}
});
var data = {"total":0,"rows":[]};
var totalCost = 0;
function addProduct(name,price){
function add(){
for(var i=0; i<data.total; i++){
var row = data.rows[i];
if (row.name == name){
row.quantity += 1;
return;
}
}
data.total += 1;
data.rows.push({
name:name,
quantity:1,
price:price
});
}
add();
totalCost += price;
$('#cartcontent').datagrid('loadData', data);
$('div.cart .total').html('Total: $'+totalCost);
}
Cada vez que se coloca un producto, primero obtenemos el nombre y el precio del producto, y luego llamamos a la función 'addProduct' para actualizar la cesta.
Descargar ejemplos de jQuery EasyUI
jeasyui-dd-shopping.zip
Otras extensiones