Tôi biết điều này đã cũ và tất cả các giải pháp này là các bản hack xung quanh các biện pháp phòng ngừa bảo mật của trình duyệt với giá trị thực.
Điều đó nói rằng, tính đến ngày hôm nay, fileInput.click () hoạt động trong Chrome hiện tại (36.0.1985.125 m) và Firefox ESR hiện tại (24.7.0), nhưng không hoạt động trong IE hiện tại (11.0.9600.17207). Xếp chồng một trường tệp có độ mờ 0 trên đầu nút hoạt động, nhưng tôi muốn một yếu tố liên kết là trình kích hoạt hiển thị và di chuột dưới gạch chân không hoạt động trong bất kỳ trình duyệt nào. Nó nhấp nháy rồi biến mất, có lẽ trình duyệt suy nghĩ xem liệu kiểu dáng di chuột có thực sự áp dụng hay không.
Nhưng tôi đã tìm thấy một giải pháp hoạt động trong tất cả các trình duyệt đó. Tôi sẽ không tuyên bố đã thử nghiệm mọi phiên bản của mọi trình duyệt hoặc tôi biết rằng nó sẽ tiếp tục hoạt động mãi mãi, nhưng dường như nó đáp ứng nhu cầu của tôi bây giờ.
Thật đơn giản: Định vị màn hình trường nhập tệp (vị trí: tuyệt đối; trên cùng: -5000px), đặt một phần tử nhãn xung quanh nó và kích hoạt nhấp chuột vào nhãn, thay vì chính trường tệp.
Lưu ý rằng liên kết không cần phải được viết kịch bản để gọi phương thức nhấp của nhãn, nó không tự động làm điều đó, giống như khi bạn nhấp vào văn bản bên trong phần tử nhãn. Rõ ràng là phần tử liên kết nắm bắt được nhấp chuột và nó không đi qua nhãn.
Cũng lưu ý rằng điều này không cung cấp cách hiển thị tệp hiện được chọn, vì trường không có màn hình. Tôi muốn gửi ngay lập tức khi tệp được chọn, vì vậy đó không phải là vấn đề đối với tôi, nhưng bạn sẽ cần một cách tiếp cận hơi khác nếu tình huống của bạn khác.