我有一个jquery UI拖放库存。它有效,但如果我的库存中已有20个商品(如果它已满),我希望它不会发生。
我在javascript / jquery上不是很好,我无法弄清楚如何修复我的代码来做到这一点。如果库存已满,我希望它恢复到原来的位置。
这是我用来拖放的功能
function itemInSpot(drag_item,spot) {
// this is my count. i don't want it to drop an item if it's 20 or more.
var inv_count = parseInt(<? echo count($inv_item) ?>, 10);
var oldSpotItem = $(spot).find('img');
oldSpotItem.appendTo('#inventory').draggable({ revert: 'invalid' });
var item = $('<img />');
drag_item.empty().remove();
item.attr('src',drag_item.attr('src')).attr('title',drag_item.attr('title')).attr('id',drag_item.attr('id')).attr('class',drag_item.attr('class')).appendTo(spot).draggable({ revert: 'invalid' });
}
这是运行该功能的代码,在pageload上设置:
$(document).ready(function() {
$(".weapons,.shield").draggable({ stack: "div", revert: 'invalid'});
$('#inventory').droppable();
$("#weapon_spot").droppable({ accept: '.weapons'})
$('#shield_spot').droppable({ accept: '.shield'});
$('#weapon_spot,#shield_spot,#inventory').bind('drop', function(ev,ui) { itemInSpot(ui.draggable,this); });
});
那么如何添加if inv_count > 19 then revert item back to it's original position
?
答案 0 :(得分:2)
这是一个基本的 jsFiddle example ,它有六个可拖动/可放置的项目,在第三个项目被放置在目标上之后,会触发警报,并且不允许其他可拖动项放置在可放置的项目中区域。如果尝试掉落,则元素保留可拖动属性并恢复到其原始位置。
jQuery的:
$(".ui-widget-content").draggable({
revert: "invalid"
});
$("#droppable").droppable({
drop: function(event, ui) {
$(this).addClass("ui-state-highlight").find("p").html("Dropped!");
$(ui.draggable).addClass('in');
if ($('.in').length == 3) {
$("#droppable").droppable("option", "accept", ".in");
alert('Full!');
}
}
});