既然你沒有包括一個非常完整的例子,我不得不採取一些自由,你可能不得不適應他們自己的代碼。
工作實施例:https://jsfiddle.net/Twisty/njt3x3su/
HTML
<div id="products">
<table width="240px">
<thead>
<tr>
<th>Object</th>
<th>Name</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class='draggable'><img src="https://placehold.it/100/FF0000/FFFFFF?text=Item+1"></div>
</td>
<td>
<h4>Item 1</h4>
</td>
<td>$1.00</td>
</tr>
<tr>
<td>
<div class='draggable'><img src="https://placehold.it/100/00FF00/FFFFFF?text=Item+2"></div>
</td>
<td>
<h4>Item 2</h4></td>
<td>$2.99</td>
</tr>
<tr>
<td>
<div class='draggable'>
<img src="https://placehold.it/100/0000FF/FFFFFF?text=Item+3">
</div>
</td>
<td>
<h4>Item 3</h4></td>
<td>$3.50</td>
</tr>
</tbody>
</table>
</div>
<div id="dropzone" class="addItem"></div>
<form>
<label for="price">Price: </label>
<input type="text" name="price" id="price" placeholder="price" value="$0.00" />
<label for="qnty">Quantity</label>
<input type="text" name="qnty" id="qnty" value="0">
</form>
上述HTML可以表示從PHP的輸出。既然你沒有包含示例輸出,這就是我創建的。
CSS
#dropzone {
border: 2px dotted #202020;
width: 98px;
height: 98px;
margin: 3px;
}
.addItem {
background-color: #CFCFCF;
background-image: url("https://placehold.it/200/CFCFCF/000000?text=Add+Item");
background-repeat: no-repeat;
background-position: -50px -50px;
}
您的例子並不包括任何的造型,所以我不知道,如果用戶將能夠知道在哪裏可以拖動項目。我加了一些。爲了創造一些視覺反饋,我補充了一點,但是我放棄了,因爲它不在這個問題的範圍內。
jQuery的
$(function() {
var customerItems = [];
$(".draggable").draggable({
opacity: 0.75,
revert: true,
helper: function() {
var me = $(this);
var par = me.parent();
var item = $("<div>", {
src: $(this).attr("src"),
class: "dragItem"
})
.css({
width: "100px",
height: "100px",
background: "url('" + me.find("img").attr("src") + "') no-repeat"
})
.data({
name: $.trim(par.next().text()),
price: parseFloat($.trim(par.next().next().text()).substring(1))
});
return item;
}
});
$("#dropzone").droppable({
//accept: ".dragItem",
classes: {
"ui-droppable-hover": "acceptItem",
"ui-droppable-active": "ui-state-default"
},
drop: function(e, ui) {
console.log(ui.helper.data());
customerItems.push(ui.helper.data());
var sum = 0,
qnty = customerItems.length;
$.each(customerItems, function(key, item) {
sum += item.price;
});
$("#price").val("$" + sum);
$("#qnty").val(qnty);
}
});
});
您沒有包括任何示例代碼,所以我不知道你嘗試過什麼。基本上,你的下降將捕獲拖動項目的細節。一旦它有這些拘留,您可以使用.val()
方法將它們添加到輸入字段。
因此,如果項目在#dropzone
上丟失,則可以使用$("#price").val("$" + sum);
來填充該字段的值。
那麼我們如何得到價格呢?從ui.draggable
或ui.helper
對象中獲取它們是最容易的。有很多方法可以使用可拖動項目來存儲對象詳細信息。我建議使用data
屬性。
由於您的HTML並未具體包含data
屬性中的詳細信息,但在表中,選擇並移動可拖動對象時必須收集這些詳細信息。一個潛在的更好的方式來呈現數據是這樣的:
<div class='draggable' data-name="Item 1" data-price="1.00">
<img src="https://placehold.it/100/FF0000/FFFFFF?text=Item+1">
</div>
,因爲如果你希望用戶搶到1個或更多,或只有每一個現在還不清楚,我決定做一個helper
對象來表示選擇。使用一個函數,我們可以創建一個適合我們需求的幫助對象,並且將包含以後需要的所有數據。從源頭上,我們可以從各個表格單元收集圖像,名稱和價格。
希望有所幫助。編輯您的帖子並添加更多詳細信息。評論你是否有問題。
你需要顯示你已經嘗試過的代碼。 SO不是代碼編寫服務,我們不會爲你做。 – TheValyreanGroup
哦。對不起。我編輯了我的帖子。謝謝 –
@JqueryNewbie這個例子中的JS/jQuery代碼在哪裏? – Twisty