【问题标题】:Fine Uploader and how to highlight extra drop zone area during drag and drop?Fine Uploader以及如何在拖放过程中突出显示额外的拖放区域?
【发布时间】:2014-05-15 14:48:48
【问题描述】:

我已成功为 Fine Uploader 添加了一个额外的拖放区,效果很好。

但是,当开始拖放操作时,我希望能够以与突出显示默认放置区域相同的方式突出显示额外放置区域。

我尝试将 qq-upload-drop-area 类添加到我的额外放置区域,但当然它会将所有内容都涂成红色,无论拖放是否正在进行。

任何关于如何正确实现此功能的指针将不胜感激。

【问题讨论】:

    标签: drag-and-drop fine-uploader


    【解决方案1】:

    您可以使用the standalone drag and drop module。确保为 classes.dropActive 选项添加一个值,该值与添加到活动的原始拖放元素的类相匹配。

    $(document).ready(function(){
    
        $('#fineuploader-traditional').fineUploader({
            // ...
        });
    
        $(document.body).fineUploaderDnd({
            classes: {
                dropActive: 'qq-upload-drop-area'
            }
        })
        .on('processingDroppedFiles', function(event){
            console.log('Processing');
        })
        .on('processingDroppedFilesComplete', function (event, files, target){
            $("#fineuploader-traditional").fineUploader('addFiles', files);
        });
    
    });
    

    我在这里做的是在document.body 上实例化一个新的fineUploaderDnd 实例(您可能希望将此元素更改为其他元素)。我给它一个 dropActive'qq-upload-drop-area' 这是使用 Fine Uploader UI 时放置区域的默认类(请注意,您可以将 any 类放在这里 - 理想情况下它会匹配应用到原始 dropzone 的类(当它处于活动状态时,以便两个 dropzone 匹配)。此类表示当一个或多个文件被拖到拖放区时应用到拖放区的样式。

    'processingDroppedFilesComplete' 事件允许我将接收到的文件添加到 Fine Uploader 的一个实例——在那里它们将被验证并最终上传。

    更新

    如果您希望任何放置区的内容在项目进入放置区之前不可见,只需确保放置区容器上存在qq-hide-dropzone 属性即可。

    <div id="extra-dropzone" qq-hide-dropzone></div>
    

    更新 2

    另一个可能的选项是使用dragAndDrop.extraDropzones 选项,它会自动执行很多操作。

    $(document).ready(function(){
    
        $('#fineuploader-traditional').fineUploader({
            // ...
            dragAndDrop: {
                extraDropzones: [ $("#extra-dropzone") ]
            },
        });
    
    <div id="extra-dropzone" qq-hide-dropzone>
        <h2>Drop files here</h2>
    </div>
    

    【讨论】:

    • 感谢您提供的解决方案,我很可能会实施该解决方案。但是在我这样做之前,是否有一种更简单的方法来突出显示添加的拖放区?我真的只需要知道用户在 DnD 的中间,然后突出显示我的放置区。我几乎可以拥有一个几乎隐藏的传统 FU 放置区,只需注意它具有突出显示的类......然后将亮点添加到我的放置区......非常hacky......但这只是我需要的亮点,我完了。否则我会实施你的解决方案。
    • @sthede -- 查看我的更新 -- 我想我真的不明白它怎么能更简单。我实际上会使用第二种方法,除非您需要更多我建议的方法更适合的自定义功能。
    • 我已经能够在拖放区上拖动文件时突出显示我的额外拖放区。但我的行为与默认放置区域不同。基于 FU 模板的放置区域会在拖动的文件进入浏览器窗口时立即突出显示。在尝试移动默认放置区域时,我注意到默认放置区域确实是屏幕的大小,但只有该区域的 div 被突出显示。如何让我的额外 DnD 区域在拖动的文件进入浏览器窗口时立即突出显示,就像默认的 DnD 区域一样?
    • 实际上我不确定默认放置区域是否为全屏,但它看起来确实有所不同,因为在 DnD 进入浏览器窗口时立即突出显示,而不仅仅是 DnD 区域本身。
    • 拖放区的默认行为是在将一个或多个文件拖入浏览器窗口时突出显示。这有助于向用户指示页面上有可用的放置区。这与 dropzone 变为“活动”时不同,即用户将文件拖到实际放置区域上时。这是我在使用上述两种方法时看到的行为。如果你有你的 JavaScript 代码,我很乐意看看。
    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    相关资源
    最近更新 更多