dropzone.js在查询之前检查条件

时间:2014-04-02 22:19:09

标签: javascript jquery dropzone.js

我正在使用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>

1 个答案:

答案 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     
        }
    });