![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 30.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam następujacy problem.
Chciałbym utworzyć formularz dodąjacy dane do bazy. Na wstępie użytkownik ma mozliwość wyboru ile danych wprowadzić. Zdjecie ponizej przedstawia formularz na wstepie: ![]() Za pomocą przycisku "dodaj" dodajemy kolejne pola formularza ![]() wszystko odbywa sie za pomocą kodu jquery: budowa dokumentu html wyglada nastepujaco: Wszystko by było fajnie tylko nazwy tych wszystkich pól formularza nie są dynamiczne. Oczywiscie wszystkie maja takie same id i name-y podczac 'klonowania'. Jak zmienic te nazwy dynamicznie podczas klonowania pol formularza? Może ktoś się spotkał z podobnym problemem? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zrób sobie zmienną, która będzie się zwiększać przy dodaniu każdego wiersza do formularza, niech to będzie 'x'. Zamiast atrybutu name="nazwa" użyj name="nazwa[x]" i tak z każdym polem. Potem odbierając z $_POST['name'] dostaniesz tablicę zamiast jednej wartości.
-------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 30.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jasne... tablice zmiennych nie są mi obce, chodzi mi bardziej o to gdzie wytworzyć iteracje tej wartości 'x'.
Przypominam iz tworzone to jest dynamicznie wiec podczas sprawdzania zrodla strony nie wiswietlaja sie te rekordy poza 1 zdefiniowanym na sztywno przez php. Jakiś pomysł? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
No nie bardzo rozumiem twój problem, robisz sobie globalną zmienną (var x = 0;), która zwiększa się przy każdym wywołaniu add() i umieszczasz ją w atrybucie name wstawianego elementu (el.attr('name', 'name['+(x++)+']')). Wartość atrybutu 'name' każdego inputa wchodzącego w skład nowego rekordu możesz sobie wyciągnąć wycinając z jego wartości część z nawiasami kwadratowymi np za pomocą replace().
-------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 30.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
teraz mój kod wygląda następująco. Wszystko zrobiłem tak jak mi radziłeś.
Problem na jaki teraz napotkałem to taki: --- przed kliknieceim dodaj---- pierwszy wiersz (name = nazwa[0]) --- pierwsze klikniecie (dodanie kolejnego wiersza) ---- pierwszy wiersz (name = nazwa[1]) drugi wiersz (name = nazwa[1]) --- drugie klikniecie (dodanie kolejnego wiersza) ---- pierwszy wiersz (name = nazwa[2]) drugi wiersz (name = nazwa[1]) trzeci wiersz (name = nazwa[2]) --- trzecie klikniecie (dodanie kolejnego wiersza) ---- pierwszy wiersz (name = nazwa[3]) drugi wiersz (name = nazwa[1]) trzeci wiersz (name = nazwa[2]) czwarty wiersz (name = nazwa[3]) itd. Wiec mój utworzony za pomocą html-a wiersz (pierwszy bez js) zmienia swoja nazwę zgodnie z tym ostatnio utworzonym. Jak temu zapobiec? tzn aby każdy z nowo utworzonych wierszy miał indywidualną nazwę? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zauważ, że za każdym razem tworzysz inputy o tych samych id co jest niedopuszczalne ponieważ w dokumencie nie może być więcej niż 1 elementów o tym samym id. Przy kazdym dodaniu odwołujesz się do elementu o id '#nazwa', JQ wyszukuje pierwszy element z takim id i zmienia mu atrybut name.
Po prostu musisz zmieniać też id nowo stworzonych elementów. Ten post edytował krowal 10.02.2011, 10:41:25 -------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 30.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
no tak... masz racje z tym id... tylko jakim sposobem sklonować wiersz tabeli od razu z nowymi wartościami?
Podczas klonowania tym kodem tworzą się 2 identyczne wiersze o tych samych name i id. Nawet gdy moje id będzie także zmienna tablicową to p sklonowaniu będzie miała taki sam index i podczas próby zmiany tak jak pisałeś zedytuję się element o pierwszym napotkanym id. Czytałem w dokumentacji jquery o funkcjach appendTo() i clone() i nie widze mozliwości aby zmieniać id podczas wywołania tej funkcji. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
A tak nie zadziała ?
Ten post edytował krowal 11.02.2011, 16:20:31 -------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 30.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Super dziękuje bardzo za pomoc. Po kilku zmianach kod docelowy wygląda następująco:
Nie wiem czy to jest poprawnie... ale działa jak należy ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 18:05 |