2013-05-01 24 views
6

Tôi đang thử nghiệm ý tưởng này bằng cách sử dụng div trên đỉnh của hình <input type="file" /> ẩn để tôi có thể tạo nút tải lên tệp ưa thích. Tôi đã thấy một số mã xung quanh nhưng hơi phức tạp. Tôi nghĩ đến việc cố gắng ý tưởng này của việc sử dụng jQuery để kích hoạt các nhấp chuột của thẻ đầu vào từ container divKích hoạt nhấp chuột với jquery trên thẻ đầu vào bị ẩn

Html:

<div id="container">&nbsp;Click Me!&nbsp; 
    <input type="file" id="file" /> 
</div> 

Javascript:

$(document).ready(function() { 
    $('#container').click(function() { 
     $('#file')[0].click(); 
    }) 
}); 

Mặc dù mã chạy OK trên Chrome và IE, nó không chạy trên Safari và nó có một vấn đề buồn cười với Firefox: nó kích hoạt nhấp chuột hai lần! Bất kỳ ý tưởng tại sao điều này là như vậy? jQuery được cho là nền tảng chéo và tôi bối rối. Đây là fiddle

http://jsfiddle.net/kostasd/C4sCs/1/

Cảm ơn trước sự giúp đỡ nào!

Kostas

+3

Công việc xung quanh cho đây không phải là để che giấu yếu tố, nhưng thay vào đó cung cấp cho nó một 'display: block; position: absolute; top: 0; trái: -9999px; ', sau đó quấn nó với một container có 'vị trí: tương đối; overflow: hidden; width: somepx;'. ** KHÔNG SỬ DỤNG display: none **. Sau đó kích hoạt nhấp chuột của bạn; bam, hỗ trợ nhiều trình duyệt. – Ohgodwhy

+0

Cảm ơn vì mẹo. Tôi sẽ thử. – user2339672

+0

Trong phiên bản hiện tại của Firefox, nó cũng sẽ hoạt động với 'display: hidden' – CoderPi

Trả lời

5

Các giải pháp có thể khác nhau mà tôi đã cố gắng rất

  • Sử dụng Visiblity: hidden; chiều rộng: 1px; cho phần tử Nhập tệp.

Các jsfiddle cho nó là như sau http://jsfiddle.net/C4sCs/36/

  • Chỉ sử dụng Css để gọi bấm vào tập tin đầu vào và không sử dụng jquery ở tất cả

    #container { 
    border:1px solid #b0b0b0; 
    display: inline-block; 
    position:relative; 
    overflow:hidden; 
    cursor:pointer; 
    } 
    #file { 
    position:absolute; 
    top:0; 
    opacity:0; 
    display:block; 
    } 
    

http://jsfiddle.net/C4sCs/42/

+1

Không bao bọc đầu vào tệp trong phần tử nút! Hiểu tôi. Div làm việc mặc dù. – Stoutie

+0

Điều này cũng gây ra vấn đề cho tôi. Cảm ơn gợi ý! –

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