2012-08-26 33 views
5

thể trùng lặp:
In JavaScript can I make a “click” event fire programmatically for a file input element?Làm cách nào để mở trình chọn tệp bằng JavaScript?

tôi đã ngây thơ thử như sau để mở hộp thoại chọn tập tin lập trình với Javascript (xem fiddle here):

<input type='file'>​ 

<script> 
    $(function() { 
     $('input').click(); 
    }); 
</script> 

Các doesn trên 't làm việc. Làm cách nào để mở bộ chọn tệp của input type='file' bằng JavaScript?

+0

Tức là, jQuery? –

+0

@ JaredFarrish: jQuery hay không, tôi không quan tâm. – Randomblue

+0

Vì lý do bảo mật, bạn không thể làm điều đó. – SLaks

Trả lời

8

Vì lý do bảo mật, bạn không thể kích hoạt hộp thoại, trừ khi nó là như một phản ứng với một số người dùng kích hoạt sự kiện. Ví dụ: bạn có thể kích hoạt hộp thoại thông qua nhấp chuột vào một phần tử khác:

$(function() { 
    $(".someElement").click(function() { 
     $('#f').click(); 
    }); 
}); 

Working example.

5

Là biện pháp bảo mật, bạn chỉ có thể mở hộp thoại như vậy trên đầu vào của người dùng, chẳng hạn như sự kiện nhấp chuột (trên bất kỳ phần tử nào). Bạn không thể mở nó ngẫu nhiên như khi tải trang.

http://jsfiddle.net/fEBFp/2/

+2

Tôi nghĩ rằng đó là một chút kỳ lạ không có ngoại lệ bảo mật trong giao diện điều khiển, mặc dù. –

+3

Trả lời đầu vào của người dùng hoạt động tốt trên trình duyệt chéo, chỉ một điều. Nếu đầu vào của tệp có 'display: none' hoặc' visibility: hidden', hộp thoại có thể không mở trong các trình duyệt cũ hơn. Đây là một [fiddle] (http://jsfiddle.net/ult_combo/fEBFp/3/) sử dụng một ví dụ về mặt nạ thay thế mà không có 'display' /' visibility' CSS. –

+0

Cảm ơn bạn. Trong Chrome, tôi đặt đầu vào tệp vào div 0x0px ngay bây giờ. Trong Firefox, thậm chí không cần thiết phải chèn đầu vào của tệp vào tài liệu. – Robert

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