PDA

Pogčedajte punu verziju : input="file" click() event


bluesman
22. 04. 2006., 02:54
Nešto se igram sa upload-om javascriptom, i ustanovim da nešto što treba da radi u svakom browseru:


<input type="file" name="upload_file">

<input type="button" value="select file" onclick="upload_file.click();">


...radi samo u IE. Firefox uopšte ne dotvoljava click() method za type=FILE.

Znači u ovom primeru, klikom na button "select file" treba da se prikaže dialog za izbor file za upload. Kao što rekoh, to radi samo u IE.

Da li neko zna kojim drugim metodom mogu da otvoriom "browse..." dialog u Firefox-u?

ivanhoe
22. 04. 2006., 03:27
AFAIK ne mozes, bar meni nije uspelo kad sam hteo da koristim image umesto ruznog browse dugmeta...

godza
22. 04. 2006., 03:48
AFAIK ne mozes, bar meni nije uspelo kad sam hteo da koristim image umesto ruznog browse dugmeta...

opera i ff nemaju implementiran taj metod

ako ti je bash ekstra stalo do toga pogledaj ovaj tutorijal
http://www.quirksmode.org/dom/inputfile.html

malo je zamrsheno, ali moze se skontati.

takodje mozes i na ovaj nacin
http://www.michaelmcgrady.com/simple.jsp
on je extra jednostavan, morash na neki nacin da nateras da se taj fake browse button renda preko pravog browse buttona.

bluesman
22. 04. 2006., 03:54
Nije zamršeno ali je previše javascript... ja sam mislio jedno jednostavnije rešenje.

staviš za file display:none, i samo preko novog buttona pozoveš browse, a onda upišeš value od FILE u neki input=text ili čak i bez input... ali kao što rekoh, samo u IE radi (i to savrseno).

godza
22. 04. 2006., 10:51
Nije zamršeno ali je previše javascript... ja sam mislio jedno jednostavnije rešenje.

staviš za file display:none, i samo preko novog buttona pozoveš browse, a onda upišeš value od FILE u neki input=text ili čak i bez input... ali kao što rekoh, samo u IE radi (i to savrseno).

znam, to bi bilo super, ali da click() radi.

Mozda bi te ova drguga varijanta zanimala.
Zanimljiv je hack :)

Znachi postavish, slicicu za browse ili taj button, i preko njih (bilo apsolutnom, bilo relativnim pozicioniranjem) postavish input="file" i dodelish mu preko css-a transparenciju :)