2011-12-16 29 views
11

Tôi đang gặp một số sự cố khi thực hiện thao tác nhập tệp theo cách tôi muốn. Phần tử tệp tồn tại 2 phần, trường văn bản và nút duyệt. Trong các trình duyệt khác, khi nhấp vào IE, một trong hai trình duyệt này sẽ mở ra một cửa sổ nơi bạn có thể chọn tệp của mình. Tuy nhiên, trong IE, nó chỉ mở khi tôi nhấp vào nút duyệt. Nếu tôi nhấp vào trường văn bản bên cạnh nó, tôi phải doubleclick để cửa sổ mở. Có cách nào để sửa lỗi này với javascript để một nhấp chuột duy nhất trên textfield cũng sẽ mở cửa sổ? Tôi đã thử những điều sau, nhưng nó không hoạt động. (Mã được nhiều đơn giản hóa từ ví dụ thực tế)Mở cửa sổ trình duyệt trong IE trên đầu vào tập tin nhấp chuột

Html: <input id="file" name="file" type="file"/>

JS/jQuery:

$("#file").click(function(){ 
    $(this).trigger("dblclick"); 
}); 

$("#file").dblclick(function(){ 
    alert("Double"); 
}); 

Bây giờ mã trên cảnh báo "Double" nhưng không mở cửa sổ. Có cách nào để sửa lỗi này?

Xin cảm ơn trước.

Trả lời

9

Vì toàn bộ điều khiển có nguồn gốc trình duyệt (và không bao giờ được hiển thị dưới dạng nút hộp văn bản cộng), bạn chỉ cần không có quyền truy cập vào các phương thức/sự kiện sẽ cho phép bạn gọi nút tải lên. Tôi tin rằng điều này chủ yếu là để tránh các trang web lừa người dùng tải lên các tệp không có ý định.

Nếu bạn có thể dành chút thời gian để thực hiện giải pháp thay thế, this sẽ tạo một thành phần tải lên khá dễ dàng để quản lý dễ dàng hơn. Tôi chắc rằng một google nhanh sẽ liệt kê cho bạn nhiều ví dụ khác về cách tạo kiểu cho thành phần tải tệp lên.

+2

Tôi đã có cùng một vấn đề này, đầu vào tùy chỉnh của tôi trông ổn nhưng người dùng IE phải nhấp đúp chuột. Đối với những người quá lười biếng để nhấp vào liên kết: Tạo kích thước phông chữ của phần tử đầu vào tệp HUGE (bài viết đề xuất 100px, tôi cần 200px cho biểu mẫu của tôi. Nút này thổi nút để phần nhập văn bản trở nên nhỏ. – chiliNUT

0

Chỉ cần kiểm tra mã của bạn với JSFiddle trên IE6 (http://jsfiddle.net/SUWRK/) và, từ sự hiểu biết của tôi, nó hoạt động như bạn đang mong đợi ... Cảnh báo hiển thị trên một sự kiện nhấp chuột duy nhất (xin lưu ý rằng thật khó để bắt sự kiện dblclick trong IE < 9 - xem https://gist.github.com/399624).

Bạn có chắc chắn không có điều gì khác xảy ra với bộ mã lớn hơn không?

+0

Kết quả tôi muốn là để cửa sổ duyệt mở, chứ không phải để cảnh báo "Đôi". Cảnh báo chỉ để hiển thị nó thực sự kích hoạt nhấp đúp (được yêu cầu để mở cửa sổ duyệt) nhưng nó không mở cửa sổ. – Ilians

+1

Có vẻ như tôi đã hiểu lầm câu hỏi của bạn. Tôi xin lỗi vì điều đó. Dù bằng cách nào, bạn cũng không thể kiểm soát thành phần tải tệp lên đến mức bạn yêu cầu. Xem phản hồi khác của tôi (vì hộp nhận xét quá ngắn cho toàn bộ phản hồi). – lsoliveira

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