Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Code Igniter + XAJAX (dodawanie pól do formularza), Dynamiczne dodawanie pół w formularzu
kaniagandzowski
post 14.06.2007, 22:10:58
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 2.06.2006

Ostrzeżenie: (0%)
-----


Witam

Używam frameworka Code Igniter oraz XAJAX 0.2.4 zintegrowane z frameworkiem. Bardzo ładnie działa i nie sprawia problemów. (na stronie http://codeigniter.com/wiki/XAJAX/ pokazane jest jak zrobić)

Problem jest tego typu że gdy mam wypełnione pola formularza i później zdecyduje że chce jeszcze dodać więcej pól to wartości, które były wpisane w pola (input) zostaną zmazane i tylko wartości zostaną zmazane ale wiersz z polami zostanie dodany a poprzednie pola pozostaną. Dziwi mnie bo powinno, tak myślę, wartości w input zostawić jeśli działa dodawanie pól.

Poniżej przedstawiam metodę odpowiedzialną za dodawanie tych pól
  1. <?php
  2. function dodajPole($wiersze)
  3. {
  4. $objResponse = new xajaxResponse();
  5. /* zlicza ile wierszy pol zostalo dodanych ponieważ liczba wierszy sluzy jako idi
    fikator 
  6. wiersza dodanych pol. Pozwala to później na usuniecie wiersza o wybranym id wier
    sza*/
  7. $wiersze++;
  8. $objResponse->addAssign('nrWierszy', 'value',$wiersze);
  9.  
  10. //w zmienej jest umieszczone pola typu input i checkbox ktore maja byc dodawane po
    la do formularza
  11.  
  12. $polaHTML = '<tr id="tr'.$wiersze.'">
  13.  <td id="idPolaTD'.$wiersze.'"></td>
  14. <td id="nazwaPolaTD'.$wiersze.'"></td>
  15. <td id="typPolaTD'.$wiersze.'"></td>
  16. <td id="wartoscTD'.$wiersze.'"></td>
  17. <td id="typWartosciTD'.$wiersze.'"></td>
  18. <td id="wymaganePoleTD'.$wiersze.'"></td>
  19. <td id="">r</td>
  20. <td id=""></td>
  21. <td id=""></td>
  22.  </tr>';
  23.  
  24.  //to co powstalo w zmienej poleHTML zostanie wypełnione odpowiednimi polami
  25. $objResponse->addAppend("dynamicznePolaFormularza", "innerHTML", $polaHTML);
  26. $objResponse->addCreateInput('nazwaPolaTD'.$wiersze, "text", "pola[".$wiersze."][Id_pola]", "pola[".$wiersze."][Id_pola]");
  27.  
  28. $objResponse->addCreateInput('typPolaTD'.$wiersze, "text", "pola[".$wiersze."][Nazwa_pola]", "pola[".$wiersze."][Nazwa_pola]");
  29.  
  30. return $objResponse->getXML();
  31. }
  32. ?>


Jak zauważyłem wina jest po stronie innerHTML gdy usunę wiersz z
  1. <?php
  2. $objResponse->addAppend("dynamicznePolaFormularza", "innerHTML", $polaHTML);
  3. ?>


i pozostawcie tylko te polecenia ktore służa do dodawania inputów to ładnie dodaje

  1. <?php
  2. $objResponse->addCreateInput('nazwaPolaTD'.$wiersze, "text", "pola[".$wiersze."][Id_pola]", "pola[".$wiersze."][Id_pola]");
  3.  
  4. $objResponse->addCreateInput('typPolaTD'.$wiersze, "text", "pola[".$wiersze."][Nazwa_pola]", "pola[".$wiersze."][Nazwa_pola]");
  5. ?>


ale w tedy nie mam zachowanej estetyki na stronie www i chce żeby każde dodane pola były w osobnym wierszu, który wiersz ma przypisany styl CSS co ładnie się prezentuje

Poniżej jest szablon
  1. <div id="polaFormularza">
  2. <table id="dynamicznePolaFormularza" class="polaFormularza">
  3. <tr>
  4. <td class="naglowek">Id</td>
  5. <td class="naglowek">Nazwa</td>
  6. <td class="naglowek">Typ</td>
  7. <td class="naglowek">Wartość domyślna </td>
  8. <td class="naglowek">Typ wartości </td>
  9. <td class="naglowek">Wymagane</td>
  10. <td class="naglowek"> </td>
  11. <td class="naglowek"> </td>
  12. <td class="naglowek"> </td>
  13. </tr>
  14.  
  15. </table>


Czy ma ktoś może rozwiązanie tego problemu? Ja całkowicie sie nie znam na Java i dlatego wybrałem XAJAX co mi bardzo wystarcza.

Druga sprawa czy może ktoś wie dlaczego działający kod w IC z XAJAX 0.2.4 działa ale nie działa po upgreidzie na XAJAX 0.2.5
wyskakuj błąd i ten temat był poruszony (tak myśle że chodzi o to samo) na http://community.xajaxproject.org/viewtopic.php?id=4630 ale z tej strony nie rozumiem


Znalazłem rozwiązanie drugiego błedu. Wina jest w bibliotece a dokładnie w pliku xajax.inc.php (linia 747 do 756) znajduje się błąd literowy
  1. <?php
  2. if (is_string($sResponse)) {
  3. $oResponse = new xajaxResponse();
  4. $oResponse->addAlert("No XML Response Was Returned By Function $sFunctionName.nnOutput: ".$oResponse);
  5. }
  6. else if ($sPreResponse != "") {
  7. $oNewResponse = new xajaxResponse($this->sEncoding, $this->bOutputEntities);
  8. $oNewResponse->loadXML($sPreResponse);
  9. $oNewResponse->loadXML($oResponse);
  10. $oResponse = $sNewResponse;
  11. }
  12. ?>

a powinno być tak
  1. <?php
  2. if (is_string($oResponse)) {
  3. $oNewResponse = new xajaxResponse();
  4. $oNewResponse->addAlert("No XML Response Was Returned By Function $sFunctionName.nnOutput: ".$oResponse);
  5. $oResponse = $oNewResponse;
  6. }
  7. else if ($sPreResponse != "") {
  8. $oNewResponse = new xajaxResponse($this->sEncoding, $this->bOutputEntities);
  9. $oNewResponse->loadXML($sPreResponse);
  10. $oNewResponse->loadXML($oResponse);
  11. $oResponse = $oNewResponse;
  12. }
  13. ?>


Ale upgrade nie pomogło mi rozwiązać mój główny problem.


Czy wie może dlaczego po zastosowaniu innerHTML w kodzie do dodawania inputów w IE wartości poprzednio dodanych inputów są a w firefox znikają wszystkie wartości uprzednio dodane

Ten post edytował kaniagandzowski 14.06.2007, 22:12:28
Go to the top of the page
+Quote Post
Turgon
post 15.06.2007, 20:24:45
Post #2





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Bo zamieniasz kod obecny w danej części drzewa DOM na swój nowy tongue.gif A nie dodajesz tongue.gif


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
kaniagandzowski
post 18.06.2007, 16:35:30
Post #3





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 2.06.2006

Ostrzeżenie: (0%)
-----


ale ja używam funkcji addAppend która to własnie dodaje a nie zamienia całą treść w swoim drzewie DOM tak jak robi addAssign.
A po drugie w Ie działa ale nie chce działać pod firefox. Póki co nadal męcze sie nad tym problemem.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 13:34