jEasyUI mencipta troli beli-belah drag-and-drop


Jika anda hanya boleh melaksanakan seret dan lepas melalui apl web anda, anda tahu anda sedang menikmati sesuatu yang istimewa. Dengan jQuery EasyUI, kami hanya boleh melaksanakan fungsi drag-and-drop dalam aplikasi web.

Dalam tutorial ini, kami akan menunjukkan kepada anda cara membuat halaman troli beli-belah yang membolehkan pengguna menyeret dan meletakkan item yang mereka ingin beli. Item dan harga dalam bakul beli-belah akan dikemas kini. 20.jpg

Paparkan produk pada halaman

	<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>

Seperti yang anda lihat kod di atas, kami menambah elemen <ul> . Semua produk mempunyai atribut nama dan harga, yang terkandung dalam elemen <p>

Buat Troli Beli-belah

	<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>

Kami menggunakan grid data untuk memaparkan item dalam troli beli-belah.

Seret item klon

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

Sila ambil perhatian bahawa kami menetapkan nilai atribut boleh seret daripada 'proksi' kepada 'klon', jadi elemen boleh seret akan diklon.

Letakkan produk terpilih ke dalam troli beli-belah

rrreee

Setiap kali produk diletakkan, kami mula-mula mendapat nama produk dan harga, dan kemudian memanggil fungsi 'addProduct' untuk mengemas kini bakul beli-belah.

Muat turun contoh jQuery EasyUI

jeasyui-dd-shopping.zip