jEasyUI建立拖放的購物車


如果您能夠透過您的 Web 應用程式簡單地實現拖曳和放置,您就會知道一些特別的東西。透過 jQuery EasyUI,我們在 Web 應用中可以簡單地實現拖放功能。

在本教學中,我們將向您展示如何建立一個啟用使用者拖曳和放置使用者想買的商品的購物車頁面。購物籃中的物品和價格將會更新。 20.jpg

顯示頁面上的商品

	<ul class="products">
		<li>
			<a href="#" class="item">
				<img src="../style/images/shirt1.gif"/>
				<div>
					<p>Balloon</p>
					<p>Price:</p>
				</div>
			</a>
		</li>
		<li>
			<a href="#" class="item">
				<img src="images/shirt2.gif"/>
				<div>
					<p>Feeling</p>
					<p>Price:</p>
				</div>
			</a>
		</li>
		<!-- other products -->
	</ul>

正如您所看到的上面的程式碼,我們新增一個包含一些<li> 元素的<ul> 元素來顯示商品。所有商品都有名字和價格屬性,它們包含在 <p> 元素中。

建立購物車

	<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: 
	$('.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';
		}
	});
</p> <h2>Drop here to add to cart</h2> </div>

我們使用資料網格(datagrid)來顯示購物籃中的物品。

拖曳複製的商品

	$('.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);
	}

請注意,我們把 draggable 屬性的值從 'proxy' 設定為 'clone',所以拖曳元素將由複製產生。

放置選擇商品到購物車中

rrreee

每當放置商品的時候,我們先得到商品名稱和價格,然後呼叫 'addProduct' 函數來更新購物籃。

下載 jQuery EasyUI 實例

jeasyui-dd-shopping.zip