Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Okno browse przy upload - po kliknieciu na div ?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
haryb
Mam taki kod:

  1. <script type="text/javascript" src="scripts/jquery-1.4.2.js"></script>
  2. </head>
  3. <div id="button"> Kliknij </div>
  4. <input type="file" name="upload" id="upload" style="display:none;">
  5.  
  6. <script type="text/javascript">
  7. $('#button').click(function() {
  8. $('#upload').click();
  9. });
  10. </body>
  11. </html>
  12.  


Zastanawiam się co tutaj jest źle że okno to do wyboru plików upload mi sie nie otwiera. Jakoś inaczej to się wywołuje moze?
Chodzi mi ogólnie żeby po kliknieciu w diva, lub a otworzyło mi się to okienko do wyboru plików.

mortus
Po pierwsze to nie okno, tylko pole input. Nie ma się "otworzyć" (a raczej pokazać), bo w linii 11 wcale go nie pokazujesz, a jedynie przechwytujesz puste zdarzenie onclick dla tego pola. Pokazuje się za pomocą .show(), a nie za pomocą .click(). To są podstawy. Proponuje w Google wpisać frazę jQuery tutorial. Powodzenia.
haryb
Jak robię .show() to mi się pokazuje input i klawisz przeglądaj - a mi właśnie chodzi o to żeby go nie było widać,
tylko od razu po kliknięciu pojawiło się samo okno do wyboru pliku.
Tak jak to jest po kliknięciu na klawisz przeglądaj.
mortus
Ale przecież przycisk przeglądaj jest właśnie polem <input type="file" />
haryb
No ok, tylko że ja nie chce by było widoczne ani pole input ani klawisz przeglądaj, tylko żebym miał jakiś link, diva na którego kliknę i otworzy mi się to samo okno co bym normalnie kliknąć na klawisz przeglądaj czyli to okno do wyboru plików.
da rade tak zrobić?
erix
Jeśli chodzi o input[type=file], to nie ukrywaj go przez display: none. Inaczej niczego tym nie osiągniesz, gdyż formularz nie zostanie wysłany z plikiem.

Aby osiągnąć efekt własnego przycisku, wpakuj element do jakiegoś diva, wycentruj w nim to pole do prawej krawędzi i obraz ustaw jako tło tego diva. I teraz trochę magii - ustawiasz maksymalną przezroczystość dla tego pola na plik, albo visibility: hidden (choć nie pamiętam, jak to ostatnie działa; jeśli chodzi o pierwsze, to działa na pewno winksmiley.jpg).
haryb
W sumie nie chodzi mi finalnie o zrobienie innego klawisza - innego wyglądu - tylko potrzebuje funkcje, która w postaci np. function(){...} którą sobie pod coś tam podepnę lub nawet w momencie załadowania strony wrzucę - taka by otworzyła mi to okno przeglądaj - i żeby praktycznie nie było żadnego klawisza widocznego a tą funkcje mógł sobie podpiąć gdziekolwiek i po jej wykonaniu otwiera się to okno.

Jest to w ogóle możliwe by takie coś zrobić?
erix
Nie ma możliwości wywołania czegoś takiego ze względów bezpieczeństwa. Użytkownik musi samodzielnie kliknąć na ten i tylko ten przycisk, stąd kombinowanie z jego przezroczystością.
haryb
Ok dzięki za wyjasnienie.

Pozdro
Hary
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.