2008-12-09 6 views
28

Obecnie robię front end dla strony z looooads form, wszystkie stylizowane i wyglądające ładnie w IE, ale właśnie zauważyłem, że w Firefoksie pola wprowadzania plików nie odpowiadają żadnym z moich stylów, wszystkie inne rodzaje pól wejściowych są w porządku. Sprawdziłem to w Firebug i powiązałem z nim odpowiednie style, ale nie zmieniałem ich wyglądu.Jak mogę ustawić styl w polu wejściowym pliku w przeglądarce Firefox?

Jeśli to nie jest kompletny mózg w moim imieniu, to czy jest to znany problem w Firefoksie? A jeśli tak, to jak ja tego nigdy wcześniej nie zauważyłem?

Oto przykład kodu.

CSS:

form.CollateralForm input, 
form.CollateralForm textarea 
{ 
    width:300px; 
    font-size:1em; 
    border: solid 1px #979797; 
    font-family: Verdana, Helvetica, Sans-Serif; 
} 

HTML:

<form method="bla" action="blah" class="CollateralForm"> 
    <input type="file" name="descriptionFileUpload" id="descriptionFileUpload" /> 
</form> 

Próbowałem zostały również stosowanie klasy do niego, ale to nie działa.

+0

To pytanie jest duplikatem. Zobacz: [http://stackoverflow.com/questions/269582/setting-uniform-input-typefile-width-in-all-browsers#269602](http://stackoverflow.com/questions/269582/setting-uniform- input-typefile-width-we wszystkich przeglądarkach # 269602) –

Odpowiedz

-4

Użyj kodu oszukiwać (#) frontem do atrybutu klasy css powiedzieć:

form.CollateralForm input, 
form.CollateralForm textarea 
{ 
    width:300px; //for firefox 
    #width:200px; //for IE7 
    _width:100px; //for IE6 
    font-size:1em; 
    border: solid 1px #979797; 
    font-family: Verdana, Helvetica, Sans-Serif; 
} 
+3

w rzeczywistości, podkreślenie jest dla IE6. –

+0

Nie widzę, jak to pomoże, problem polega na tym, że firefox nie odpowiada na żadną stylistykę dla pól do wprowadzania plików, ale nie jest tak, jak w przypadku stylu wielobranżowego –

+5

, w jaki sposób ta odpowiedź jest przydatna? – jordanstephens

4

Firefox może być posiekany pomocą HTML atrybut rozmiaru wejścia: size = "40" podczas korzystania szerokość css kontrolować pełną szerokość pola + przycisk w układzie

+0

czy to nadal obowiązuje? Wypróbowanie tego w Firefoksie 51.0.1 na Macu nie rozwiązuje problemu ... –

+1

Wokół Firefoksa 36 zaczęło się śledzenie deklaracji CSS i ignorowanie atrybutu size. – ppostma1

41

Wiele z powyższych odpowiedzi jest dość starych. W 2013 roku znacznie prostsze rozwiązanie istnieje: prawie wszystkie bieżące przeglądarek ...

  • Chrome
  • IE
  • Safari
  • Firefox z kilku linii naprawić

przechodzą przez kliknij wydarzenia od etykiet. Wypróbuj go tutaj: http://jsfiddle.net/rvCBX/7/

  • Style <label> jakkolwiek chcesz przesyłanie plików być.
  • Ustaw atrybut for="someid" na etykiecie
  • Utwórz element <input id="someid">, który jest ukryty.

Kliknięcie etykiety spowoduje przejście zdarzenia do pliku w Chrome, IE i Safari.

Firefox requires a very small workaround, which is detailed in this answer.

+3

Absolutnie fantastyczne, wielkie dzięki! – Sprottenwels

+0

@mikemaccana: czy mogę edytować css tak, jak chcę? [jsfiddle] (http://jsfiddle.net/prashantptapase/rvCBX/200/) coś takiego. Próbowałem, ale wysokość, szerokość itp. nie zmieniały się. –

+1

@Prashant Tak, musisz ustawić 'display: block' w twoim przykładzie http://jsfiddle.net/prashantptapase/rvCBX/200/ – mikemaccana

2

Powiedzmy masz swój wkład:

<input style="display:none" id="js-choose-file" type="file"> 

Tworzenie fałszywy przycisk za pomocą jQuery.

<a id="js-choose-computer" href="javascript:void(0);">From Computer</a> 

Styl powyższego przycisku, jak tylko chcesz. Następnie:

$("#js-choose-computer").on("click", function() { 
    $("#js-choose-file").click(); 
    return false; 
}); 
Powiązane problemy