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
<?php function dodajPole($wiersze) { $objResponse = new xajaxResponse(); /* zlicza ile wierszy pol zostalo dodanych ponieważ liczba wierszy sluzy jako idi
fikator wiersza dodanych pol. Pozwala to później na usuniecie wiersza o wybranym id wier
sza*/ $wiersze++; $objResponse->addAssign('nrWierszy', 'value',$wiersze); //w zmienej jest umieszczone pola typu input i checkbox ktore maja byc dodawane po
la do formularza $polaHTML = '<tr id="tr'.$wiersze.'"> <td id="idPolaTD'.$wiersze.'"></td> <td id="nazwaPolaTD'.$wiersze.'"></td> <td id="typPolaTD'.$wiersze.'"></td> <td id="wartoscTD'.$wiersze.'"></td> <td id="typWartosciTD'.$wiersze.'"></td> <td id="wymaganePoleTD'.$wiersze.'"></td> <td id="">r</td> <td id=""></td> <td id=""></td> </tr>'; //to co powstalo w zmienej poleHTML zostanie wypełnione odpowiednimi polami $objResponse->addAppend("dynamicznePolaFormularza", "innerHTML", $polaHTML); $objResponse->addCreateInput('nazwaPolaTD'.$wiersze, "text", "pola[".$wiersze."][Id_pola]", "pola[".$wiersze."][Id_pola]"); $objResponse->addCreateInput('typPolaTD'.$wiersze, "text", "pola[".$wiersze."][Nazwa_pola]", "pola[".$wiersze."][Nazwa_pola]"); return $objResponse->getXML(); } ?>
Jak zauważyłem wina jest po stronie innerHTML gdy usunę wiersz z
<?php $objResponse->addAppend("dynamicznePolaFormularza", "innerHTML", $polaHTML); ?>
i pozostawcie tylko te polecenia ktore służa do dodawania inputów to ładnie dodaje
<?php $objResponse->addCreateInput('nazwaPolaTD'.$wiersze, "text", "pola[".$wiersze."][Id_pola]", "pola[".$wiersze."][Id_pola]"); $objResponse->addCreateInput('typPolaTD'.$wiersze, "text", "pola[".$wiersze."][Nazwa_pola]", "pola[".$wiersze."][Nazwa_pola]"); ?>
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
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
<?php $oResponse = new xajaxResponse(); $oResponse->addAlert("No XML Response Was Returned By Function $sFunctionName.nnOutput: ".$oResponse); } else if ($sPreResponse != "") { $oNewResponse = new xajaxResponse($this->sEncoding, $this->bOutputEntities); $oNewResponse->loadXML($sPreResponse); $oNewResponse->loadXML($oResponse); $oResponse = $sNewResponse; } ?>
a powinno być tak
<?php $oNewResponse = new xajaxResponse(); $oNewResponse->addAlert("No XML Response Was Returned By Function $sFunctionName.nnOutput: ".$oResponse); $oResponse = $oNewResponse; } else if ($sPreResponse != "") { $oNewResponse = new xajaxResponse($this->sEncoding, $this->bOutputEntities); $oNewResponse->loadXML($sPreResponse); $oNewResponse->loadXML($oResponse); $oResponse = $oNewResponse; } ?>
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