Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> IE9 nie widzi nowych pól formularza
Sephirus
post 13.05.2013, 11:41:05
Post #1





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,

Kombinuje z tym już jakiś czas i ni w ząb nie mogę na nic wpaść. Robię coś takiego:

Prosty formularz a w nim input (type="file"). Obok niego button "dodaj więcej plików", który to wrzuca do formularza poprzez JS kolejnego inputa typu "file". Chodzi mi o to by użytkownik mógł wybrać kilka plików i je wysłał (ile - to zależy od niego). Atrybut name inputów oczywiście wygląda tak: "images[]".

Pod każdą inną przeglądarką (w tym IE10) to działa a pod IE9 form wysyłany jest z tylko pierwszym wybranym plikiem. Ktoś wie o co może chodzić?

  1. <input type="file" name="images[]"/>
  2. <input type="file" name="images[]"/> <!-- ten dodany przez JS -->
  3. <input type="file" name="images[]"/> <!-- ten dodany przez JS -->
  4. <input type="file" name="images[]"/> <!-- ten dodany przez JS -->


Z listingu powyżej wysyłany jest tylko jeden plik (pierwszy).

Inputy w JS wrzucałem przy pomocy "cloneNode", jQuery, tworzyłem element od nowa i wrzucałem jako innerHTML - żadna metoda nie działa.



--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
nospor
post 13.05.2013, 11:45:56
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jesteś pewien, że strukutra forma jest poprawna? Nic z niczym się nie przeplata? Możesz gdzieś pokazać to online?

Kiedyś koleś miał identyczny problem: dynamicznie dodawane rzeczy nie szly formem a okazalo się ze miał taką sieczkę w formie, że cud ze w ogole mu cokolwiek szło


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sephirus
post 13.05.2013, 11:54:47
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Treść jest dokładnie taka jak powyżej smile.gif Robiłem to praktycznie na samych tych inputach <form><input><input>...</form> - nic poza tym całą reszta poza (na gołym pliku).

Tak czy owak doszedłem do rozwiązani (może nie w pełni ale działa) UWAGA! Bo rozwiązanie jest ciekawe biggrin.gif

Złe podejście dla IE9: (jak widać tongue.gif)

Mamy input, dodajemy go do forma przez JS, wybieramy plik, wysyłamy formularz, nie działa...

Dobre podejście:

Mamy input, dodajemy go do formularza przez JS, wybieramy plik, ponownie dodajemy go do formularza przez JS (appendChild itp), wysyłamy formularz, DZIAŁA ...

Nie mam zupełnie pojęcia o co chodzi... może to kwestia "mojego IE"... sam już nie wiem - przetestuje to na innych maszynach bo problem ciekawy jak widać smile.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
sowiq
post 13.05.2013, 12:26:31
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Sephirus @ 13.05.2013, 12:54:47 ) *
Mamy input, dodajemy go do formularza przez JS, wybieramy plik, ponownie dodajemy go do formularza przez JS (appendChild itp), wysyłamy formularz, DZIAŁA ...

No nie, tak to zdecydowanie nie powinno działać. Nieważne jaki <input type="file" /> dodasz do formularza, zawsze będzie miał on puste value (względy bezpieczeństwa). Jeśli nadpisywałbyś istniejący input nowym, wygenerowanym w JS, to na pewno nie zostałaby w nim zawartość value.
Więc albo źle opisałeś wyjście, albo jak pisał nospor, masz coś nieźle skopane w innym miejscu smile.gif
Go to the top of the page
+Quote Post
Sephirus
post 13.05.2013, 12:48:29
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Nie nie - mi nie chodziło o kopiowanie inputa razem z plikiem - ani jego klonowanie - nic z tych rzeczy. Ja tworzyłem za każdym razem nowy, pusty input, nastepnie wybierałem w nim plik i wysyłałem formularz. Kończyło się to tym, że nie wysyłane były pliki z inputów dodanych w ten sposób. Dopiero jak w zdarzeniu "change" danego inputa dałem:

[JAVASCRIPT] pobierz, plaintext
  1. element.onchange = function (event) {
  2. this.form.appendChild(this); // sick!!!
  3. }
[JAVASCRIPT] pobierz, plaintext


to zaczęło to działać. Oczywiście input już był wcześniej w formie, więc ta operacja teoretycznie nie robi nic nowego - a jednak wink.gif

EDIT: na stronie był tylko jeden formularz w obrębie którego był ten dodany input

Ten post edytował Sephirus 13.05.2013, 12:49:51


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 06:01