2012-06-05 44 views
5

Khi sử dụng trình tải lên tệp Valums Ajax, tôi làm cách nào để kích hoạt tải lên?Làm cách nào để kích hoạt tệp tải lên bằng Trình tải tệp lên Valums Ajax?

Hành vi mặc định là để quá trình tải lên bắt đầu ngay sau khi người dùng chọn tệp. Tôi muốn ngăn điều này xảy ra và thay vào đó kích hoạt tải lên khi người dùng nhấp vào nút "Tải lên" riêng biệt sau khi họ đã chọn tệp.

Tôi đã xem xét mã và thấy rằng quá trình tải lên bắt đầu vào sự kiện change được đính kèm với tệp nhập. Tôi bắt đầu bằng cách thêm return false; để đến onSubmit chức năng, và sau đó gắn một sự kiện click vào nút khác mà gây ra sự kiện thay đổi:

$('#startUpload').on('click', function() { 
    // some conditionals 
    $('input[name="file"]').trigger('change'); 
}); 

Đó không hoạt động. Nó chỉ mở lại menu tệp.

Làm cách nào để ngăn việc tải lên diễn ra ngay sau khi người dùng chọn tệp và thay vào đó kích hoạt tệp khi người dùng nhấp vào nút khác?

Trả lời

3

Bạn sẽ phải sửa đổi tệp tin-uploader.js cho việc này. Trong dòng 309, sửa đổi hàm onChange để trả về false. Sau đó, thêm chức năng sau trên nó, do đó mã trở thành:

startUpload: function(){ 
    this._onInputChange(this._button.getInput()); 
}, 
_createUploadButton: function(element){ 
    var self = this; 

    return new qq.UploadButton({ 
     element: element, 
     multiple: this._options.multiple && qq.UploadHandlerXhr.isSupported(), 
     onChange: function(input){ 
      return false; 
     } 
    }); 
}, 

Sau đó, trong tập tin HTML của bạn, trong phạm vi nút bấm của bạn hoặc bất kỳ sự kiện khác, hãy gọi

uploader.startUpload(); 

nơi người tải lên là tên của đối tượng qq.FileUploader() của bạn.

Hy vọng rằng sẽ giúp :)

+1

Phiên bản hiện tại của Trình tải lên tốt hỗ trợ tải lên được kích hoạt theo cách thủ công qua API. Không cần sửa đổi mã nữa. –

2

Valums Ajax tập tin tải lên bây giờ hỗ trợ tính năng này .. Bạn có thể Queue Files và kích hoạt Tải lên nhấp chuột lên nút

var uploader2 = new qq.FileUploader({ 
    element: $('#manualUploadModeExample')[0], 
    action: "success.html", 
    autoUpload: false, 
    demoMode: true, 
    uploadButtonText: "Select Files" 
}); 

$('#triggerUpload').click(function() { 
    uploader2.uploadStoredFiles(); 
}); 

Để biết thêm về vấn đề này, hãy kiểm tra liên kết này: valums file uploder

+0

Giải pháp này dành cho người tải lên tốt của Valums không phải là Trình tải lên tệp Valumns – Sanchitos

+1

@Sanchitos: Tôi không tìm thấy bất kỳ thứ gì như người tải lên "tốt" của Valums .. Tôi chắc chắn đó là Valums "tệp" người tải lên – casper123

+3

Từ phiên bản 2 trở lên, nó được gọi là Trình tải lên Tốt: http://fineuploader.com/, mặc dù dự án github vẫn được gọi là "tệp tải lên". – mhu

Các vấn đề liên quan