1

HTML5 ドラッグ アンド ドロップを使用して、ユーザーがファイルを自分のページに (O/S から) ドラッグできるようにしています。これは実際にうまく機能し、ファイルがアップロードされ、誰もが満足しています。

ただし、アップロードが終了したかキャンセルされたかに関係なく、ドラッグ機能はもう機能していないようです。

ここにいくつかのコードがあります (またはjsFiddleに移動します):

HTML:

<div id="MainDiv">
    <div id="DropZone" style="display: none;">Drop Files Here</div>
</div>

CSS:

#MainDiv {
    height: 400px;
    width: 100%;
    border: 1px solid black;
}

#DropZone {
    position: absolute;
    height: 50%;
    width: 50%;
    border: thick dashed blue;
    border-radius: 12px;
    top: 10%;
    left: 25%;
    text-align: center;
    font-size: x-large;
    padding-top: 20px;
    color: blue;
}

JavaScript:

$().ready(function () {
    $('#DropZone').on("dragenter dragend dragleave dragover drop", function (e) {
        e.preventDefault();
    });

    $.fn.dndhover = function (options) {
        return this.each(function () {
            var self = $(this);
            var collection = $();

            self.on('dragenter', function (event) {
                if (collection.size() === 0) {
                    self.trigger('dndHoverStart');
                }
                collection = collection.add(event.target);
            });

            self.on('dragleave', function (event) {
                setTimeout(function () {
                    collection = collection.not(event.target);
                    if (collection.size() === 0) {
                        self.trigger('dndHoverEnd');
                    }
                }, 1);
            });
        });
    };

    $('#MainDiv').dndhover().on({
        'dndHoverStart': function (event) {
            $('#DropZone').show();
            event.preventDefault();
            return false;
        },
            'dndHoverEnd': function (event) {
            $('#DropZone').hide();
            event.preventDefault();
            return false;
        }
    });

    $('#DropZone').bind('drop', function (e) {
        // Show div with dropped files .. user chooses upload or cancel
        $('#DropZone').hide(); // This would eventually happen regardless of success or failure
        return false;
    });
});

maindiv にファイルをドラッグすると、ドロップゾーンが期待どおりに表示されます。そこに任意の数のファイルをドロップすると、すべてが期待どおりに機能します。ただし、それが完了したら、2 番目のファイル (またはファイルのグループ) を maindiv にドラッグしても、何も起こりません。

私が間違っているところの手がかりはありますか?

4

0 に答える 0