2013-09-01 40 views
5

Để thay thế nút tải lên tệp xấu xí bằng nút tải lên giả mạo thời trang, tôi sử dụng jquery như bên dưới.Angularjs - Sự kiện nhấp của nút Fire2 bằng cách nhấp vào nút1 (nút tải lên giả)

HTML

<input type='file' name='file' class='file_upload_btn' style='display:none'> 
<button class='fake_upload_btn'>Upload Files</button> 

jQuery

$('.fake_upload_btn').click(function() { 
    $('.file_upload_btn').click(); 
}) 

Bây giờ những gì nếu tôi muốn làm điều tương tự trong Angularjs, mà không phụ thuộc thư viện jquery.

Trả lời

7

Nó là loại khắc phục, và tôi đã kiểm tra nó chỉ trong chrome nhưng cố gắng này:

<label for="uploader"> 
    <button class='fake_upload_btn'>Upload Files</button> 
    <input id="uploader" type='file' name='file' class='file_upload_btn' style='display:none' /> 
</label> 

JSFiddle: http://jsfiddle.net/84Xxb/

sự kiện Click trên button được đánh bắt như một nhấp chuột vào label và hậu quả là input cũng được "nhấp"!

UPDATE: Nhưng nếu bạn muốn có một thực sự "Angulary" giải pháp, bạn cần sử dụng chỉ thị, như thế này:

app.directive('uploader', function() { 
    return { 
     template: "Upload Files <input type='file' name='file' class='file_upload_btn' style='display:none'>", 
     link: function(scope, element, attrs) { 
     element.bind("click", function(){ 
      element.find("input")[0].click(); 
     }); 
     } 
    } 
}); 

dụ làm việc: http://plnkr.co/edit/DVALMH?p=preview

+0

Tôi đã kiểm tra này trên firefox, IE9, IE10 và chrome. Nó hoạt động như một sự quyến rũ. Cảm ơn. – user1995997

+0

@ user1995997 tuyệt vời, nó cũng sẽ hữu ích cho tôi! – Cherniv

+0

Nó không hoạt động trong các phiên bản cũ của firefox. – user1995997

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