我会建议使用类的文件上传 - 会降低你的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