2010-08-22 59 views
1

JS Bin demojQuery UI的可拖动/排序/可弃禁用当达到极限可放开

任务下降:

我创建使用jQuery UI的事件调度。事件具有一定的长度(以分钟为单位),并且可以拖入不同的日子,每个日子都有自己的最大长度(以分钟为单位)。在这个例子中,每一天的最大长度为480分钟,没有480多分钟的有价值的“事件”应该被允许在下降

问题:

如果“事件”将导致“日”超过其最大时间长度(基于已经放在其上的元素的组合时间),应该禁用“日”(对于该特定事件不允许丢弃)。

正如你可以从demo看到的那样,我可以计算出每天的事件总时间(“可用分钟数”是在停止时更新的),但是我不知道如何禁用掉进日期if被拖动的事件会导致“可用分钟数”变为负值。

回答

2

这里最简单的做法是在开始时运行一个函数来检查是否有任何房间会被预订完毕。我已经修改了您在此处提供的演示:revised demo

它当然可以使用一些优化,但本质上它会检查您正在拖动的事件的长度,并隐藏可排序的时间不足的任何房间。我隐藏了房间,因为禁用它们会生效太晚。我还在每个房间之前在html中添加了一个跨度,以便在没有足够时间时显示。可能最好添加这个js,但没有很多时间来完善。

希望有帮助!

+0

我什至不想隐藏元素。我尝试禁用它,改变拖动元素的'接受'类...这工作得很好,并会满足我的需求。谢谢!!! – Paul 2010-08-22 13:37:20

2
$("#daybox" /*or selector for days elements*/).bind("sortreceive", function(event, ui) { 

    if(/*percent*/ >= 100) 

     $(ui.sender).sortable('cancel'); 
}); 

然后,被丢弃的元素返回到该组。