我正在使用dropzone.js上传图片。 有一个html选择列表,用户需要在上传图片之前选择一个类别,因此CGI知道放置它们的位置。
有没有办法让dropzone在上传之前满足条件,或者还有其他办法?
$(function() {
Dropzone.options.myAwesomeDropzone = {
init: function () {
var myDropZone = this;
$("#btnRemoveAll").click(function () {
myDropZone.removeAllFiles();
}
);
$("#categories").change(function () {
myDropZone.removeAllFiles();
}
);
},
success: function(file,r){
file.previewElement.classList.add("dz-success");
alert(r); // response from server
// this.removeFile(file); // remove file after upload
},
drop:function(){
var tkn=getToken();
$("#token").val(tkn);
var c=$("#categories").val();
$("#cat").val(c);
},
error: function(){
ajaxError();
},
acceptedFiles: "image/jpeg"
};
});
html:
Category:<br>
<select id="categories">
<option value="foo">Please choose</option>
<option value="cat1">cat1</option>
<option value="cat2">cat2</option>
</select><br>
New category :<input type="text" id="category">
<form action="cgi/uploadfile.exe"
class="dropzone"
id="my-awesome-dropzone">
<input type="hidden" id="token" name="token">
<input type="hidden" id="cat" name="cat">
</form>
<button id="btnRemoveAll">Clear Dropzone</button>
答案 0 :(得分:3)
您可能已经找到了解决方案,但这对我有用:
autoProcessQueue: false
添加到dropzone选项覆盖提交按钮的点击事件,并在告知dropzone处理队列之前检查您的条件:
$('#submit_button').click(function(e) {
e.preventDefault();
e.stopPropagation();
if ( //check your conditions here ) {
myDropzone.processQueue();
} else {
//show error
}
});