$("body").on("drop") 与 Dropzone.js
$("body").on("drop") with Dropzone.js
我有一个效果很好的拖放区。我还有一些附加元素 "targets",用户可以在其中放置文件。
问题是,我不知道如何"forward"将目标元素中的拖放文件上传到拖放区。我更喜欢下面的代码示例,而不是生成多个放置区,因为在这种情况下感觉很糟糕,因为将来目标放置元素的数量可能是 10 或 15+。
"drop": function(e) {
e.preventDefault();
myDropzone.upload(e.originalEvent.dataTransfer); // Any way to do something like this?
}
您可以通过访问 Dropzone.instances
并获取您想要的实例来轻松完成此操作。如果你只有一个,那就抢Dropzone.instances[0]
。如果您有多个,那么您可以找到其上具有正确 id
的元素的那个。获得该引用后,您可以调用 drop
并沿着自定义区域的 drop
事件中的 dataTransfer
对象转发。
您的 drop
事件处理程序的代码可能如下所示:
function (e) {
// make sure to avoid default browser handling (opens file in a new tab/window)
e.preventDefault();
if (e.dataTransfer && e.dataTransfer.files.length) {
// you could pass along the entire event, but probably best to just pass what you need
Dropzone.instances[0].drop({ dataTransfer: e.dataTransfer });
}
}
Here's a sandbox 有一个工作示例。它实际上并没有将文件上传到服务器,但您会看到它们按预期添加到拖放区。
我有一个效果很好的拖放区。我还有一些附加元素 "targets",用户可以在其中放置文件。
问题是,我不知道如何"forward"将目标元素中的拖放文件上传到拖放区。我更喜欢下面的代码示例,而不是生成多个放置区,因为在这种情况下感觉很糟糕,因为将来目标放置元素的数量可能是 10 或 15+。
"drop": function(e) {
e.preventDefault();
myDropzone.upload(e.originalEvent.dataTransfer); // Any way to do something like this?
}
您可以通过访问 Dropzone.instances
并获取您想要的实例来轻松完成此操作。如果你只有一个,那就抢Dropzone.instances[0]
。如果您有多个,那么您可以找到其上具有正确 id
的元素的那个。获得该引用后,您可以调用 drop
并沿着自定义区域的 drop
事件中的 dataTransfer
对象转发。
您的 drop
事件处理程序的代码可能如下所示:
function (e) {
// make sure to avoid default browser handling (opens file in a new tab/window)
e.preventDefault();
if (e.dataTransfer && e.dataTransfer.files.length) {
// you could pass along the entire event, but probably best to just pass what you need
Dropzone.instances[0].drop({ dataTransfer: e.dataTransfer });
}
}
Here's a sandbox 有一个工作示例。它实际上并没有将文件上传到服务器,但您会看到它们按预期添加到拖放区。