2016-08-09 13 views
2

2つの入力テキストを含む標準フォームに含まれるファイルをアップロードするためのdropzoneフォームがあります。この場合、送信ボタン(id = submit-all)の動作は(ボタンがクリックされると、すべてのファイルをアップロードするためには)次のJavaScriptの部分に支配:ボタンをクリックするとdropzone:ファイルが選択されていない場合、送信ボタンは機能しません

Dropzone.options.myDropzone = { 
    // Prevents Dropzone from uploading dropped files immediately 
    autoProcessQueue: false, 
    uploadMultiple: true, 
    init: function() { 
    var submitButton = document.querySelector("#submit-all") 
     myDropzone = this; // closure 
    submitButton.addEventListener("click", function() { 
     myDropzone.processQueue(); // Tell Dropzone to process all queued files. 
    }); 
    this.on("queuecomplete", function (file) { 
     if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) { 
     location.href = 'write.php?final=y'; 
    } 
    }); 
    } 
}; 

、すべてのファイルがアップロードされ、処理された予想通り、その後、訪問者がにリダイレクトされていますページ 'write.php?final = y'(おめでとうメッセージ)。 ファイルが選択されていない場合、このスクリプトは機能しません。ボタンをクリックしても効果はありません。

誰でもこの問題を解決できますか? あなたの返信には事前に多くの感謝!ファイルがないので、手動でもイベントを放出するための方法、単純な使用

this.emit("signalname"); 

とイベントの一覧があり

Dropzone.options.myDropzone = { 
    // Prevents Dropzone from uploading dropped files immediately 
    autoProcessQueue: false, 
    uploadMultiple: true, 
    init: function() { 
    var submitButton = document.querySelector("#submit-all"); 
    myDropzone = this; // closure 
    submitButton.addEventListener("click", function() { 
     if (myDropzone.getUploadingFiles().length === 0 && myDropzone.getQueuedFiles().length === 0) { 
      location.href = 'write.php?final=y'; 
     } 
     else { 
      myDropzone.processQueue(); 
     } 
    }); 
    } 
}; 

+0

dropzoneにファイルがない場合に、なぜ送信ボタンを使用したいのですか? –

+0

@Martin:送信ボタンはいくつかのトリガを引き起こすため、いくつか選択されたときに画像をアップロードして処理しますが、確認メールを送信して最後に別のページにリダイレクトします。 – Romain

+0

@martin:フォームに2つの入力テキストタグも含まれていることを忘れていた – Romain

答えて

2

queuecompleteが放出されていない

Dropzone.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"]; 
+0

ありがとうございますが動作しません:送信ボタンをクリックしても、一部のファイルが選択されているかどうかには影響ありません。 – Romain

+0

これは私のために、コンソールログをチェックして、サブミットオールボタンを見つけることに問題があるかもしれません。 –

+0

コンソールログから次のメッセージが表示されます: "スローされた値を持つ例外:TypeError:this.getUploadingFilesは関数ではありません'this.getUploadingFiles()'、 'this.getUploadingFiles'は未定義です) " – Romain

関連する問題