我會建議使用類的文件上傳 - 會降低你的jQuery代碼..例如...
<input type="file" id="file1" name="file1" class="uploadifyfile" />
<input type="file" id="file2" name="file2" class="uploadifyfile" />
<input type="file" id="file3" name="file3" class="uploadifyfile" />
那麼你的jQuery變爲:
$("#add_facility_form").submit(function(event){
$('.uploadifyfile').uploadifyUpload(); // uses class instead of multiple IDs
if (numFilesUploaded < $(".uploadifyQueueItem").length) { return false; }
});
然後,當您初始化uploadify元素時,添加一個onComplete
我THOD保持完成上傳的軌道:
$(".uploadifyfile").each(function() {
$(this).uploadify({
'onComplete': function (event, queueId, fileObj, response, data) {
incrementUploadedCount();
}
});
});
然後保持已完成上傳的音軌,然後在incrementUploadedCount
功能檢查了所有已經完成,如果他們有提交表單
創建一個變量
// keep track of uploaded count
var numFilesUploaded = 0;
function incrementUploadedCount() {
numFilesUploaded++; // increment complete count
// check if complete count matches number of uploadify elements
if (numFilesUploaded == $(".uploadifyQueueItem").length) {
// submit your form
$("#add_facility_form").submit();
}
}
,你忘了提及的是,他現有的觸發功能應該是一個'$(關鍵點「# ()方法,它應該是'if(numFilesUploaded <$(「。uploadifyQueueItem」)。length){return false; }'以防止表單提交,直到上傳完成。但+1 – DaveRandom 2012-02-15 13:35:53
@DaveRandom謝謝 - 更新了代碼...現在更有意義了嗎? – ManseUK 2012-02-15 13:44:09
確實如此。我剛剛意識到的一件事實際上是我不確定是否if(...){return false; }'是必需的,或者你是否可以'返回false'; - 我不確定是否調用'.submit()'觸發提交處理程序。我會認爲它*應該*,而我剛剛在Chrome中進行過測試,但它可能並非如此 - 爲了以防萬一,可能最好這樣做。 – DaveRandom 2012-02-15 13:51:01