【发布时间】:2018-11-30 09:03:20
【问题描述】:
我将 Dropzone 合并到我的表单中,其中包含其他数据。对于创建过程,它运行良好。图片可以拖放到Dropzone框内,当点击“Save_button”时,图片将连同其余的表单数据一起提交。
我也使用同一个页面,用于编辑过程,以允许用户编辑提交的图像和其他相关数据。上传的图片通过下面的代码块“上传图片屏蔽”拉取并显示在Dropzone中。
问题出现在这里。如果用户没有在 Dropzone 中添加任何新图像,则单击“Save_button”不会获取要上传的表单!我认为 processQueue 没有做任何事情,因为图像队列是空的,因此没有提交表单。
问题:有没有办法强制提交表单?比如触发“sendingmultiple”事件,让其他表单数据可以提交?
Dropzone.prototype.defaultOptions.dictDefaultMessage = "Drop images here to upload<br>(.jpg, .jpeg, .gif, .png)";
Dropzone.options.myDropzone = {
url: '/addpage',
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 5,
maxFiles: 5,
maxFilesize: 1,
acceptedFiles: '.png,.jpg,.jpeg,.gif',
addRemoveLinks: true,
init: function () {
dzClosure = this;
myDropzone1 = this;
//Block with uploaded images, start
var imagesList = ["http://www/path/to//image1.jpg"]
for (var i = 0; i < imagesList.length; i++) {
var mockFile = { id: i, name: "Image " + i, filename: imagesList[i], size: 1, type: "image/jpg", status: Dropzone.QUEUED, accepted: true, upload: {} };
myDropzone1.emit("addedfile", mockFile);
myDropzone1.createThumbnailFromUrl(mockFile, imagesList[i], "", "");
myDropzone1.files.push(mockFile);
myDropzone1.emit("complete", mockFile);
}
//Block with uploaded images, end
document.getElementById("Save_button").addEventListener("click", function (e) {
e.preventDefault();
e.stopPropagation();
var success = true;
if (!someFormValuesValidation())
success = false;
if (!success) {
alert("Form validation failed, please check values.");
return false;
}
else {
dzClosure.processQueue();
}
});
this.on("sendingmultiple", function (data, xhr, formData) {
$('#loading').show();
formData.append("Title", jQuery("#Title").val());
formData.append("Price", jQuery("#Price").val());
formData.append("Quantity", jQuery("#Quantity").val());
});
this.on("successmultiple", function (file, result) {
if (result.Response == "0") {
alert("Success!");
} else {
alert("There is a problem: " + result.Error);
}
file.status = Dropzone.QUEUED;
myDropzone1.status = Dropzone.QUEUED;
$('#loading').hide();
});
this.on("maxfilesexceeded", function (file) {
this.removeFile(file);
alert("Can't add more images. Maximum only 5 images");
});
}
}
<form action="/addpage" autocomplete="off" id="Form" method="post" enctype="multipart/form-data">
<div class="dropzone" id="my-dropzone">
<div class="fallback">
<input name="Images" type="file" multiple />
</div>
</div>
<button type="button" class="save-btn" id="Save_button">Save</button>
</form>
【问题讨论】:
标签: jquery dropzone.js dropzone