【发布时间】:2015-01-01 15:48:15
【问题描述】:
我有多个用于在网页上上传文件的放置区
如何在将文件拖入浏览器后立即突出显示所有 dropzone 元素,以便用户知道将文件放到哪里?当一个文件被拖到其中一个放置区时,我需要添加一个额外的类来指示用户可以释放文件
更新
kurideja 为我指出了 Dragster 的正确方向
https://github.com/bensmithett/dragster
现在它几乎可以工作了:)
- 如果您拖过一个放置区并向后拖动而不释放文件,则所有放置区都被隐藏
http://jsfiddle.net/L7v2f96z/9/
html
<div class="dropzone"></div>
<div class="dropzone"></div>
javascript
// Add/remove class when file is dragged over the dropzone. Hover effect
$('.dropzone').dragster({
enter : function(){
$(this).show().addClass('hover');
},
leave : function(){
$(this).hide().removeClass('hover');
}
});
// Show/hide dropzones until a file is dragged into the browser window. Hide dropzones after file is dropped or dragging is stopped
var w = $(window).dragster({
enter : function(){
$('.dropzone').show();
},
leave : function(){
$('.dropzone').hide();
}
})
// Prevent defaults (file is openened in the browser) if user drops file outside a dropzone
.on('dragover', function(e){
e.preventDefault();
})
.on('drop', function(e){
e.preventDefault();
w.trigger('dragleave');
});
css
.dropzone {
width:200px;
height:200px;
background:#fff;
display:none;
border:2px dashed rgba(0,0,0,0.5);
box-shadow:0 2px 5px rgba(0,0,0,0.1), inset 0 0 40px rgba(0,0,0,0.1);
border-radius:2px;
margin:10px;
}
.dropzone.hover {
background:#e3e3e3;
}
【问题讨论】:
-
你在使用 JQuery UI 吗?我之所以这么问,是因为 JQuery UI 中的拖放功能允许您突出显示一个放置区域,并且我很确定您可以将其装配为允许放置多个突出显示。 jqueryui.com/droppable
-
IE 不喜欢哪个部分?闪烁可能是由超时引起的......您可能应该将其分配给一个变量,以便如果用户仍在拖动东西但碰巧触发了您的
dragout计时器,您可以取消它。我曾在this answer over here 做过类似的事情。
标签: javascript jquery