Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzony przez www formularz i jego wysłanie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
jastu
Napisałem aplikacje do testów i tworzę w niej używając JS formularze np. pytanie ma 4 odpowiedzi. Ilość odpowiedzi ustalam odpowiednią liczbą i skryptem generuję odpowiednią ilość inputów type=text. Problem polega na tym że przegladarki takie jak FF i Opera nie wysyłają tych dynamicznie wygenerowanych pól ( tylko IE wysyła :| ) . Korzystam z innerHTML który wstawia w diva inputy.
bełdzio
nie powiem, że pokazanie kodu by pomogło ..
jastu
Nie wiem czy pomoże wstawienie kodu ale proszę :

Funkcja która generuje inputy do pytania " jedna odpowiedź prawidłowa"
  1. function make_form($display_div,$ile,$insert_div){
  2. // ilosć odpowiedzi
  3. $ile_odp = $($ile).value;
  4.  
  5. // wyświetlenie odpowiedniego diva (innegi niż ten w który wstzelimy kod html)
  6. $($display_div).style.display="block";
  7.  
  8. // wyczyszczenie diva w którego wsztrzelimy html'a
  9. $($insert_div).innerHTML = "";
  10.  
  11. // generowanie inputów
  12. for(var $i = 1;i<=$ile_odp;$i++){
  13. $($insert_div).innerHtml += '<input type="radio" value= " '+$i+' " name="correct" >';
  14. $($insert_div).innerHtml +='<input type="text" name=" '+$i+' "><br>';
  15. }
  16.  
  17. }
  18.  
  19. function $($el){
  20. return document.getElementById($el);
  21. }


Formularz na stronie generuję się prawodłowo , po wysłaniu go jednak tablica POST nie zawiera pól generowanych dynamicznie.
revyag
Nazwa inputa nie może być/zaczynać się od liczby/cyfry.
A poza tym w js nie daje się $ przed nazwą zmiennej.
jastu
Wiem o tym że w JS nie ma potrzeby dodawania $ przed nazwą zmiennej (łatwiej mi tak orientowac się w kodzie), natomiast zmiana linijki

  1. $($insert_div).innerHtml +='<input type="text" name=" '+$i+' "><br>';


na

  1. $($insert_div).innerHtml +='<input type="text" name=" o_'+$i+' "><br>';


nie przyniosła pożądanego efektu.
pzdr
revyag
1. nie innerHtml, tylko innerHTML
2.
Kod
for(var $i = 1;i<=$ile_odp;$i++){
widzisz, piszesz dolce przed nazwami zmiennych i później masz takie kwiatki, że zapominasz o ich napisaniu.
jastu
dry.gif Nie chcę być niemiły ale czego dotyczyło pytanie ? (literówki w kodzie mogą się zdarzyć bo przepisuję go recznie - jest na laptopie, ). Formularz mi się ładnie generuje i wyświetla ( kod z laptopa nie zawiera błędów które wspólnie poprawiamy) ... chodzi o tablicę $_POST. Wszystkie pola formularza są w DIVie który jest między znacznikami FORM i nie mam pojęcia dlaczego pola dodawane skryptem nie wchodzą w skład tablicy POST.
Pozdrawiam serdecznie

-- edit
Przeglądarki pełne są tajemnic ! A IE bywa czasami przesadnie przyjazna użytkownikowi, nawet do tego stopna że nie zauważamy prostych błędów (zagnieżdżanie znaczników).
pozdrawiam
revyag
Oczekujesz pomocy a podajesz kod który zawiera błędy. Skąd mam wiedzieć co dla Ciebie znaczy "ze formularz poprawnie się generuje".
Skopiowałem Twój kod i na jego podstawie, po poprawieniu błędów, które podałem, miałem działający kod.
Poza tym z tego co piszesz chodziło co coś innego, więc następnym razem zadawaj pytanie z głową, a również taką odpowiedź dostaniesz .
marcel33
mam podobny kłopot nie wysyłają mi się pola dynamicznie dodane do formularza, jest to pewnie właciwość FF bo w IE jest ok.
Może trzeba zmusić przeglądarkę żeby przed wysłaniem uaktualniła informacje o polach formularza, tylko jak to zrobić i czy w ogóle możliwe jest z poziomu JS zmusić przeglądarkę do przeparsowania części lub całej strony?

Jak Ktoś wie jak to obejść, będę wdzięczny.


już jest ok,
w starym skrypcie było:
  1. ....
  2. <div id="tresc_generowana">....</div>
  3. ....
  4. </form></table>

a wystarczyło poprawić na:
  1. ....
  2. <div id="tresc_generowana">....</div>
  3. ....
  4. </table></form>


Może komuś sie taka wiedza przyda snitch.gif
jastu
Tak, chodzi tu o kolejność znaczników (zagnieżdżanie). Nie sądziłem ze może nieć to aż taki wpływ na funkcjonowanie formularza , Pozdrawiam

http://www.w3.org/TR/html4/interact/forms.html
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.