2009-07-15 26 views
5

Tôi có thẻ <img ... /> mà tôi đã ràng buộc sự kiện nhấp chuột vào trong jQuery. Khi nó được nhấp vào Tôi muốn có nó mô phỏng các bấm vào một nút trên tập tin tải lên để mở hệ thống tập tin duyệt pop-up. Tôi đã thử những điều này trong chức năng nhấp chuột và không thành công:Thi đua nhấp chuột tải lên tệp trong jQuery

... 
$(".hiddenUploadBtn").click(); 
... 

... 
$(".hiddenUploadBtn").select(); 
... 

... 
$(".hiddenUploadBtn").submit(); 
... 
+0

Bạn nên chấp nhận câu trả lời mới của Adam McCormick, điều này hoàn toàn chính xác. Tôi muốn xóa của tôi, nhưng tôi không thể trong khi đó là câu trả lời được chấp nhận. – RichieHindle

+0

Câu trả lời được chấp nhận đã được cập nhật. Cảm ơn bạn đã bình luận. –

Trả lời

5

Chỉ cần quấn img trong nhãn và thiết lập cho các thuộc tính vào đầu vào của tệp. Làm việc cho bất kỳ loại nội dung và nó được xây dựng vào spec. Bạn thậm chí có thể ẩn đầu vào của tệp tại thời điểm đó.

<input type="file" id="fileUpload"><br> 
<label for="fileUpload"> 
    <img src="https://www.google.com/images/srpr/logo11w.png" /> 
</label> 
+2

+1: Tuyệt vời! JSFiddle ở đây: http://jsfiddle.net/RichieHindle/GCNEK/ – RichieHindle

-1

Thông số nói rằng nó được cho là hoạt động và trên Chrome. Tuy nhiên, Firefox và các trình duyệt phổ biến khác không tuân theo các quy tắc, vì vậy bạn là SOL.

+2

Vui lòng đăng liên kết đến thông số bạn đang đề cập đến. Ngoài ra, có sự khác biệt giữa "triển khai" và triển khai trình duyệt. Ví dụ, làm tất cả các trình duyệt làm cho CSS render như nó phải theo spec? Rõ ràng là không. Vì vậy, chỉ vì spec nói nó nên hoạt động không có nghĩa là trình duyệt cho phép nó hoạt động. –

2

này làm việc cho tôi

<input name="picture" type="file" onchange="alert(this.value)" class="file" size=20/> 

cho nút sử dụng tải lên như hình ảnh thử này

<style> 
div.fileinputs {position:relative; display:inline;} 
div.fakefile {position:absolute; top:0px; left:0px; z-index:1;} 
input.file {position:relative; text-align:right; -moz-opacity:0; filter:alpha(opacity: 0); opacity: 0; z-index:2;} 
<style> 

<div class="fileinputs"> 
    <input name="picture" type="file" onchange="alert(this.value)" class="file" size=1/> 
    <div class="fakefile"> 
    <img src="images/browse.gif" align="middle" alt="browse" title="browse"/> 
    </div> 
</div> 

nên trường nhập ẩn, và khi u bấm hình ảnh - hộp thoại lựa chọn xuất hiện, nhưng bắt chước hộp thoại này từ js imposible, yep. Nhưng bạn cũng có thể viết các plugin/hack cho trình duyệt)

5
+0

Đây là dựa trên PHP, một số người không tìm kiếm giải pháp PHP. – Chexpir

+0

Tôi đang sử dụng tệp 'js' này. Nó làm việc tuyệt vời .. Trong chrome & IE, chúng ta có thể có được tên đường dẫn đầy đủ, nhưng trong mozilla, chúng ta không thể có được đường dẫn đầy đủ. chúng ta chỉ có thể lấy tên tập tin .... Vậy, làm cách nào để có được đường dẫn đầy đủ trong mozilla? –

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