2011-12-16 10 views
11

Mam problem z ustawieniem wejścia pliku tak, jak chcę. Element pliku składa się z 2 części, pola tekstowego i przycisku przeglądania. W innych przeglądarkach niż IE kliknięcie jednego z nich otwiera okno, w którym możesz wybrać swoje pliki. W IE jednak otwiera się tylko po kliknięciu przycisku przeglądania. Jeśli kliknę pole tekstowe obok niego, muszę dwukrotnie kliknąć, aby otworzyć okno. Czy można to naprawić za pomocą javascript, aby jedno kliknięcie pola tekstowego również otworzyło okno? Próbowałem następujące, ale to nie działa. (Kod jest znacznie uproszczone od rzeczywistego przykład)Otwórz okno przeglądania w IE na jednym pliku wejściowym z pojedynczym kliknięciem

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

JS/jQuery:

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

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

Teraz powyższy kod alarmuje "Pokój", ale nie otworzyć okno. Czy istnieje sposób, aby to naprawić?

Z góry dziękuję.

Odpowiedz

9

Ponieważ cała kontrola jest natywna dla przeglądarki (i nigdy nie są wyświetlane jako pole tekstowe plus), po prostu nie masz dostępu do metod/zdarzeń, które pozwolą ci wywołać przycisk przesyłania. Uważam, że jest to głównie po to, aby unikać witryn, które nakłaniają użytkownika do przesyłania niezamierzonych plików.

Jeśli uda Ci się zająć trochę czasu, aby zaimplementować obejście, dobrze jest utworzyć dość ładny komponent do przesyłania, który jest łatwiejszy w zarządzaniu. Jestem pewien, że szybkie google poda ci wiele innych przykładów na temat stylu komponentu do przesyłania plików.

+2

Miałem ten sam problem, moje dane wejściowe wyglądały dobrze, ale użytkownicy IE musieli podwójnie kliknąć. Dla tych zbyt leniwych, aby kliknąć łącze: Dokonaj rozmiaru czcionki swojego elementu wejściowego pliku OGROMNY (artykuł zasugerował 100px, potrzebowałem 200px dla mojego formularza, wysadza w powietrze przycisk, więc część wprowadzania tekstu staje się mała. – chiliNUT

0

Po prostu przetestowałem twój kod za pomocą JSFiddle na IE6 (http://jsfiddle.net/SUWRK/) i, jak rozumiem, działa tak, jak się spodziewasz ... Alert pojawia się w przypadku pojedynczego kliknięcia (należy pamiętać, że trudno jest uchwycić zdarzenie dblclick w IE < 9 - patrz https://gist.github.com/399624).

Czy na pewno nie ma czegoś więcej z większym zestawem kodu?

+0

Rezultat, którego chcę, to otwarcie okna przeglądania, a nie ostrzeżenie "Podwójne". Alert był tylko po to, aby pokazać, że faktycznie uruchamia podwójne kliknięcie (które jest wymagane do otwarcia okna przeglądania), ale nie otwiera okna. – Ilians

+1

Wygląda na to, że źle zrozumiałem twoje pytanie. Przepraszam za to. Tak czy inaczej, nie możesz kontrolować komponentu do przesyłania plików w wymaganym zakresie. Zobacz moją drugą odpowiedź (ponieważ pole komentarza jest zbyt krótkie dla całej odpowiedzi). – lsoliveira

Powiązane problemy