Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie elementów z nazwą tablicową
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
TomASS
Cześć,

Tworzę sobie elementy:
  1. function getHtml(){
  2. return '<input type="text" name="oczekiwania[]"/>'
  3. }
  4.  
  5. echo '<div id="tutajDodaj">';
  6. echo getHtml();
  7. echo '</div>';



Teraz do tego div (tutajDodaj) chcę dodawać dynamicznie kolejne elementy przy pomocy jQuery:
  1. function addRow(){
  2. var html = '<?php echo getHtml();?>';
  3. $('#tutajDodaj').append(html);
  4. }


Teoretycznie powinienem mieć taki kod html:
  1. <input type="text" name="oczekiwania[]"/>
  2. <input type="text" name="oczekiwania[]"/>

i po wysłaniu formularza pownienem mieć:
Cytat
oczekiwania = array('wartosc1','wartosc2');

Jednak po dodaniu przy pomoc "addRow" i wysłaniu formularza mam tylko wartość tego utworzonego przy pomocy PHP przy starcie strony a nie przy pomocy jQuery sad.gif :
Cytat
oczekiwania = array('wartosc1');


trueblue
Jesteś pewien, ze funkcja addRow jest wywoływana? Sprawdzałeś w konsoli przeglądarki, czy widać zmianę w drzewie DOM?
sazian
a ten input pojawia się na stronie po wywołaniu addRow?
TomASS
Cytat(trueblue @ 4.01.2015, 21:14:21 ) *
Jesteś pewien, ze funkcja addRow jest wywoływana? Sprawdzałeś w konsoli przeglądarki, czy widać zmianę w drzewie DOM?

tak, jestem pewien sad.gif

Cytat(sazian @ 4.01.2015, 21:43:33 ) *
a ten input pojawia się na stronie po wywołaniu addRow?

pojawia się
com
a masz to w formie czy w div jak w tym kodzie?
trueblue
A jak wysyłasz ten formularz, "twardo" czy poprzez Ajax?
TomASS
Cytat(com @ 4.01.2015, 22:40:42 ) *
a masz to w formie czy w div jak w tym kodzie?

w formie, w DOM tworzy się dokładnie pod spodem. Dziwna sprawa, bo jak odpalę dwa razy:

  1. echo '<div id="tutajDodaj">';
  2. echo getHtml();
  3. echo getHtml();
  4. echo '</div>';


To jest ok :/

Cytat(trueblue @ 4.01.2015, 22:47:51 ) *
A jak wysyłasz ten formularz, "twardo" czy poprzez Ajax?


Twardo, przez form + input type="submit"
trueblue
Pokaż zrzut ekranu z konsoli, z drzewa DOM, po wywołaniu addRow.
TomASS
Cytat(trueblue @ 4.01.2015, 23:07:33 ) *
Pokaż zrzut ekranu z konsoli, z drzewa DOM, po wywołaniu addRow.

Proszę:
trueblue
A pokaż większy zakres, tj. z całym form.
Said
Przepisałem kod z Twojego posta i u mnie działa...

index.php

  1. <?php
  2.  
  3. function getHtml()
  4. {
  5. return '<input type="text" name="oczekiwania[]"/>';
  6. }
  7. echo '<form method="post" action="post.php">';
  8. echo '<div id="tutajDodaj">';
  9. echo getHtml();
  10. echo '</div>';
  11. echo '<button type="submit">Send</button>';
  12. echo '</form>';
  13.  
  14. ?>
  15.  
  16. <button onclick="addRow();">addRow</button>
  17.  
  18. <script type="text/javascript" src="jquery-1.11.2.min.js"></script>
  19. <script>
  20. function addRow(){
  21. var html = '<?php echo getHtml();?>';
  22. $('#tutajDodaj').append(html);
  23. }
  24. </script>


post.php

  1. print_r($_POST);


Po wysłaniu formularza dla wartości 1, 2, 3 mamy takiego arraya

  1. Array ( [oczekiwania] => Array ( [0] => 1 [1] => 2 [2] => 3 ) )
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.