2011-08-25 9 views

Odpowiedz

6

Edit: Jak inni zauważyli, firefox nie suuport metodę poniżej chciałbym odnieść się do poniższego linku http://www.quirksmode.org/dom/inputfile.html

Poniżej znajduje się dość proste rozwiązanie . Radziłbym jednak dodać klasę do etykiety. Zasadniczo styl etykietę zamiast wejścia unikając problemów przeglądarki krzyż i szerokość i wysokość bugów:

<label> 
    <input type=file> 
</label> 

CSS

label input{-moz-opacity:0 ;filter:alpha(opacity: 0);opacity: 0;} 
label {background:green;width:200px;height:100px;display:block; /* more styles here */} 

http://jsfiddle.net/DVLxp/

+0

Działa to doskonale. Zmieniłem rozmiar obrazu, aby dopasować go do rozmiaru przycisku do wysyłania, używając innego przykładu, jednak jest to świetne! i bardzo proste! – Fostah

+5

W przeglądarce Firefox nie można kliknąć etykiety w celu wprowadzenia pliku. – Znarkus

+0

W przeglądarce Firefox cały obszar zielony nie jest klikalny i nie pokazuje wskaźnika. – chovy

2

Jakie strony często zrobić, gdy potrzebujemy „niestandardowe” widżet przesyłania plików: pole "prawdziwe" do przesyłania plików jest ukryte. Dodaj pole tekstowe, które pokaże aktualną wartość pola przesyłania pliku i przycisk, który uruchomi wybór pliku w polu przesyłania pliku. Oto przykład:

<input id="file" type="file" style="display: none;" 
     onchange="document.getElementById('text').value = this.value;"> 

<input id="text" type="text" readonly><input type="button" 
     onclick="document.getElementById('file').click();" value="Choose file"> 
+0

+1 To działało idealnie dla mnie i wydaje się być najprostszym, szybkim rozwiązaniem. Dzięki – jnthnjns

1

Jeśli chodzi o mnie, Zhenya Shevchenko podała jedno z najlepszych rozwiązań roboczych. Korzystanie swoją metodę, możemy utworzyć plik wejściowy przycisk cross-Przeglądarka: http://jsfiddle.net/JHcFR/

<div class="fileInput"> 
    <input type="file" /> 
</div> 

.fileInput { 
    overflow: hidden; width: 500px; height: 200px; background: red; 
} 
.fileInput input { 
    font-size: 200px; opacity: 0; 
    float: right; filter: alpha(opacity=0); /*IE*/ 
} 
3

Spróbuj tego: http://jsfiddle.net/CnHj5/ Works w Firefox i miły wskaźnik kursora jest dostępna.

HTML:

<div class="upload"> 
    <input class="upload" type="file" /> 
</div> 

CSS:

input.upload { 
    -moz-opacity:0; 
    filter:alpha(opacity: 0); 
    opacity: 0; 
    position: absolute; 
    right:0; 
    font-size: 200px; 
    cursor: pointer; 
} 
div.upload { 
    background-color:green; 
    width:200px; 
    height:100px; 
    position: relative; 
    display:block; 
    overflow:hidden;}