Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: symulacja klikniecia input type=file
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
boxpl
Mam zwykły, poprawnie działający formularz do upload:
  1. <form ENCTYPE="multipart/form-data" method="post" action="move.php">
  2. <input type="file" name="userfile" id="userfile" onchange="document.getElementById('submit').click();">
  3. <input type="submit" id="submit" style="visibility:hidden">
  4. </form>

Teraz ukrywam w formularzu input "userfile":
  1. <input type="file" name="userfile" id="userfile" style="visibility:hidden" onchange="document.getElementById('submit').click();">

oraz dodaję buttona, który będzie jedynym widocznym elementem formularza:
  1. <input type="button" value="upload" onclick="document.getElementById('userfile').click()">

Ostatecznie formularz jest taki:
  1. <form ENCTYPE="multipart/form-data" method="post" action="move.php">
  2. <input type="file" name="userfile" id="userfile" style="visibility:hidden" onchange="document.getElementById('submit').click();">
  3. <input type="submit" id="submit" style="visibility:hidden">
  4. <input type="button" value="upload" onclick="document.getElementById('userfile').click()">
  5. </form>

... tylko, że przestał działać.
Wygląda na to, że zasymulowanie zdarzenia click dla input type=file to nie to samo co kliknięcie myszą. Może kogoś z Was "dotknął" ten problem i wie ja go obejść ?
orson
witam ...

czegos tu nie rozumiem ... jak ukryty input moze sie zmienic questionmark.gif jezeli juz to ma byc tak to moze zmien funkcjie click dla buttona na submit dla forma [dodaj id dla forma] ale nadal nie widze za duzego sensu w tym ... chocby dlatego ze dla type='file' nie da sie nadac value ... user sam musi wybrac plik ...

pozdrawiam
boxpl
Cytat(orson @ 2004-08-11 22:03:14)
jak ukryty input moze sie zmienic questionmark.gif

Nie chodzi o jego zmianę tylko reakcję na wywołaną metode click().
Cytat
user sam musi wybrac plik

I wybiera sam. Okno wyboru pojawia sią, wyszukany plik jest wstawiany do input file wraz ze ścieżką tyle tylko, że bez klikania myszą a poprzez akcję click().
Problem w tym, że ten "drugi" click() - na buttonie submit nie działa poprawnie.
Jeżeli submit jest ustawiony jako visible też wtedy coś chrzani. Trzeba klikać na nim dwa razy aby wymusić akcje formularza ale tablice $_FILES[] są wtedy puste.
orson
witam ...

nadal czegos nie rozumiem ...
Cytat
Okno wyboru pojawia sią, wyszukany plik jest wstawiany do input file wraz ze ścieżką tyle tylko, że bez klikania myszą a poprzez akcję click().

skopiowalem twojego forma i nic sie nie pojawia ... na ekranie jest buton upload po klinknieciu nic sie nie dzieje ... nadal nie bardzo czaje po co tyle kombinacji ...

pozdrawiam
boxpl
Cytat(orson @ 2004-08-12 07:11:24)
skopiowalem twojego forma i nic sie nie pojawia ...

Usuń z formularza style lub zmień visibility na visible.
Cytat
na ekranie jest buton upload po klinknieciu nic sie nie dzieje

Kliknij button Upload i potem dwa razy na ikonkę ostrzeżenia o błędzie (u dołu, po lewej w przeglądarce)
Cytat
nadal nie bardzo czaje po co tyle kombinacji

Rzecz w tym, że chcę użyć Flasha do całej akcji uploadowania. Testowy plik swf można sprawdzić pod: http://plewik.pl
Z resztą to też nie takie ważne bo przede wszystkim chodzi o upload inicjowany metodą input.file.click() i potem input.submit.click(). Po tej drugiej akcji przeglądarka (IE6) pokazuje błąd. sad.gif
akubiczek
Przeglądarka nie pozwala na takie numery ze względów bezpieczeństwa - nie możesz ani automatycznie wysyłać forma jako eventa wywoływanego z input file, nie możesz też np. wstawić wartości za pomocą właściwości value.
orson
witam ...

to moze zastosuj jakies gotowe rozwiazanie ... np.:
http://www.impulsedigital.com/idio/idio-v1/
albo na http://groups.google.pl/ daj:
Kod
(actionscript OR flash) AND "file upload"
a znajdziesz duzo roznych rozwiazan i linkow ...

pozdrawiam
deejay4net
No i szukając rozwiązania dobrnąłem tutaj. Kolega orson nie wie o co chodzi więc polecam link np
http://www.uploadify.com/demo/ , chodzi właśnie o takie coś.. funkcja click działa na elemencie input file, ale tylko
w IE.. w firefoxie już nie działa..natomiast przykład podany w linku działa w FF a nie działa w IE. Po kodzie nie mogę wywnioskować jak to jest wywołane. Szukam od rana już i lipa jak ktoś to obczai to będę wdzięczny za rozwiązanie ;D
erix
Nie wyzwolisz w żaden sposób kliknięcia na przeglądaj przy pomocy skryptów. Uploadify działa na innej zasadzie, ale w elemencie HTML tego się NIE DA, ze względów bezpieczeństwa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.