wiruswww
31.08.2010, 13:15:02
Poraz kolejny mam problem z formularzami w JavaScript. otóż gdy część formularza generowana jest za pomocą JS pole dodane przez skrypt JS nie są wysyłane, np mamy sobie form, wewnątrz tabele i różne div'y, to gdy skyptem dodaje pola zachowuje się tak jak by te pola nie należały do oformularza, np: (bardzo skrótowo)
<form id='formularz'>
<table>
<tr><td><input name='pole' /></td></tr>
<tr><td><div id="pola_form"></div></td></tr>
</table>
</form>
$('#pola_form').append('<div><input name='inne_pole' /></div>');
wówczas #inne_pole poprawnie wyświetla się na stronie jest jest ignorowane podczas wysyłania forma (button submit). W firebug i webdeveloper w opcjach wyświetlania pól formularza nie zaznacza pola wstawionego za pomocą JavaScript (jQuery). W firefox w zakładce HTML powyższy kod wyglądał by następująco:
<form id='formularz'></form>
<table>
<tr><td><input name='pole' /></td></tr>
<tr><td><div id="pola_form"><div><input name='inne_pole' /></div></div></td></tr>
</table>
Jeżeli pole dodawane jest bezpośrednio pod formularz to jest ok:
$('#formularz').append('<div><input name='inne_pole' /></div>'); jednak w ten sposób nie mogę tego zrobić.
Macie jakieś pomysły jak dynamicznie dodawać pola aby działało ok?
Pozdrawiam
Mateusz
AdIoS_Neo
31.08.2010, 17:13:35
Cytat(wiruswww @ 31.08.2010, 14:15:02 )

<form id='formularz'></form>
<table>
<tr><td><input name='pole' /></td></tr>
<tr><td><div id="pola_form"><div><input name='inne_pole' /></div></div></td></tr>
</table>
To jest błąd tylko tutaj czy na stronie też próbujesz wysłać pusty formularz
<form id='formularz'></form> ?
wiruswww
31.08.2010, 20:17:22
to nie błąd, to fragment z tego co jest w Firebug w zakładce HTML, dla mnie też to dziwnie wygląda ale tak jest, wysyła cały formularz z wyjątkiem pól dodanych przez JS, czyli wysyła tylko pola "statyczne"
AdIoS_Neo
31.08.2010, 20:33:28
Pokaż co masz w kodzie a nie "co jest w Firebug" -.-' chyba, że to nie Twoja strony tylko ją próbujesz "zhackować".
wiiir
1.09.2010, 07:08:42
masz blad w append
Kod
// ty masz
$('#pola_form').append('<div><input name='inne_pole' /></div>');
//sprobuj tak
$('#pola_form').append('<div><input name=\'inne_pole\' /></div>');
cudzyslow konczy i rozpoczyna stringa w js.. wiec ty go zaczynasz i konczysz na name.. pozniej jak przegladarka to parsuje widzi ze cos jest nie tak i dlatego masz pusty formularz.
to tak jakbys chcial zrobic
Kod
alert("Bardzo "glupi" blad ktory tez czasem popelniam :)");
wiruswww
1.09.2010, 08:28:17
[quote name='wiiir' date='1.09.2010, 08:08:42 ' post='785148']
masz blad w append
[code]
Być może, ale nie jestem pewien co do tego, nie jestem w stanie teraz tego sprawdzić. Ale wydaje mi się że IDE (Netbeans) zrociłby mi na to uwagę. Problem ten mam nie pierwszy raz, w innym projekcie rozwiązałem go generując wszystkie pola statycznie ze stylem display:none a potem w JS je odkrywałem, niestety teraz nie mogę użyć tego rozwiązania.
Sądzicie że od strony logicznej to jest ok? Czy na działanie ma jakiś wpływ że pola input dodaje z różnnymi dekoracjami (div) i nie są dodawane bezpośrednio pod form tylko do td które oczywiście jest w form?
wiiir
1.09.2010, 14:13:07
Logicznie wygalda to dobrze.. popraw cydzyslowia i bedzie ok
wiruswww
2.09.2010, 09:28:43
cudzysłowia są ok
$('#dodawanie_zalacznikow').append('<input type="file" name="zalaczniki[]" class="zalaczniki_dodaj" maxlength="255">');
problem rozwiązany: rzecz banalna - tagi html się zazębiały

Tak to jest kontynuować po kimś stary projekt.
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.