Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: IE9 nie widzi nowych pól formularza
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Sephirus
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.

nospor
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
Sephirus
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
sowiq
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
Sephirus
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
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.