Dynamiczne dodawanie pól HTML a brak ich w PHP

0

Witam, problem mam następujący, dodaję dynamicznie pola w HTML, jednak później nie są one pokazywane w PHP. Mimo, że przypisuję im wartości to po wypisaniu $_POST całkiem ich brak.

Pola dodaję przez jQuery.clone, ponieważ nazwa pola klonowanego to zdjecia[]

Po dodaniu pól w źródle strony, w PHP mogę je zobaczyć, natomiast przy dynamicznym nie. Nie wiem co jest grane.
Pomoże ktoś?

0

Pokaż kod - pewnie dodajesz nowe pola poza formularz albo nie dodajesz ich w ogóle (.clone() zwraca kopię elementu, ale nie dodaje jej do DOM).

0
								var rows = $('tr.uploadphoto');
								$(rows).last().after( '<tr class="borderB no-border uploadphoto">'+ $(rows).last().html()+'</tr>' );
								rows = $('tr.uploadphoto');
								$(rows).last().find('.obraz').attr('id', 'obraz'+rows.length);
								$(rows).last().find('.obraz').attr('name', 'zdjecie'+rows.length);
								$(rows).last().find('.obraz').val('');

Pobieram najpierw ostatni wiersz z opcją dodawania zdjęcia, potem dodaje ją zaraz za tym co pobrałem, usuwam wartość i wszystko.
Problem będzie najprawdopodobniej z tym, że $.after() też nie dodaje do DOM. Ale nie mam pojęcia jak zrobić, żeby to działało?

0

daj cały formularz (albo większą część) + tyle kodu js, żeby było w nim podpinanie zdarzenia też. generalnie daj coś, co już działa, ale nie tak jak oczekujesz - najlepiej na jakimś jsbin.com - wtedy najłatwiej pomóc. nie będziemy zgadywać jaką masz resztę kodu przecież

0

Witam ponownie,

rozwiązałem problem, po wielu próbach. Skopiowałem kod do czystego dokumentu i tam działało. Więc problem musiał być w moim dokumencie. Miałem formularz otwarty przed TR w tabeli, i zamknięty tak samo. Przy kopiowaniu co prawda nie ruszałem wiersza ani z <form>, ani z </form>, więc nie wiem czemu tego nie widziało. Wiersze ze zdjęciami były po środku tabeli, a dodawane były po sobie. Tagi <form> i </form> wyrzuciłem poza tabelę i zaczęło działać, mimo, że nadal używam $.clone(), które jednak dodaje obiekty DOMu.

0

.clone() nie dodaje obiektów do DOM.
Taga form nie umieszcza się pomiędzy tagiem table a tr/td.
Kopiowałeś element tr i wsadzałeś go do elementu tr. Zagnieżdżanie tr również jest nieprawidłowe (oczywiście nie mam na myśli zagnieżdżania tabeli w tabeli).

0

Nie dodawałem jednego tr w drugi. Każdy kolejny był sąsiadem poprzedniego:

 $(rows).last().after( '<tr class="borderB no-border uploadphoto">'+ $(rows).last().html()+'</tr>' );

Rows to są wiersze mojej tabeli.

Po poprawieniu tagów form, pola w $_POST są pokazywane w PHP.

0

Po ostatnim tr ($(rows).last()) dodajesz '<tr class="borderB no-border uploadphoto">'+ $(rows).last().html()+'</tr>', gdzie $(rows).last() jest tr, czyli $(rows).last().html() zawiera tr, czyli w tr wklejasz tr.

0

Ale tam jest $(rows).last().after(), czyli tr dodaje za ostatnim.

0

@ŁF: całego kodu nie analizuję, ale jeżeli x jest elementem <tr>, to x.html() będzie ZAWARTOŚCIĄ <tr> czyli serią <td> i/lub <th>

1 użytkowników online, w tym zalogowanych: 0, gości: 1