Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] problem z dynamicznym formularzem
Forum PHP.pl > Forum > Po stronie przeglądarki
mecenas
Witam,
mam taki problem: używam formularza, w którym liczba odpowiedzi jest określana w czasie jego wypełniania. Do dodawania odpowiedzi używam takiego kodu:
  1. $("#dodaj").click(function(){
  2. var wartosc=parseInt($("#ilosc_odp").val());
  3. wartosc=wartosc+1;
  4. temp=wartosc;
  5. $("#ilosc_odp").val(wartosc);
  6. createNew(100);})

przy czym temp to zmienna przechowująca ilość odpowiedzi, a kod createNew (liczba w nawiasie to pozostałość po starszej wersji kodu)
  1. function createNew(s)
  2. {
  3. var span="<span><input type=\"text\" name=\"odp[]\" size=\"20\"/><input type=\"text\" maxlength=\"100\" size=\"80\" name=\"kom[]\" id=\"kom_"+s+"\"/><a id=\"usun\" name=\"usun\" href=\"#\"><img style=\"border: none;\" src=\"images/del.gif\" alt=\"X\" title=\"USUŃ ODPOWIEDŹ\"></a><br/></span>";
  4. $("#dodaj").before(span);
  5. }


Działa bez problemu. Trudności pojawiają się przy usuwaniu odpowiedzi - mianowicie usuwane są tylko te linijki, które zostały utworzone przed pierwszym usunięciem któregokolwiek ze spanów. Sądziłem, że namieszałem coś ze zmiennymi, ale wygląda na to, że chyba nie...

Kod odpowiedzialny za usuwanie:
  1. $("#znaczniki").find("span").find("a").click(function(){
  2. if($(this).attr("name")!="dodaj")
  3. {
  4. var wartosc=parseInt($("#ilosc_odp").val());
  5. wartosc=wartosc-1;
  6. $("#ilosc_odp").val(wartosc);
  7. $(this).parent("span").remove();
  8. }


Podejrzewam, iż popełniam jakiś kardynalny błąd - może komuś rzuca się coś takiego w oczy?
Z góry dzięki za pomoc i wszelkie sugestie.
erix
Jeśli dobrze zrozumiałem (i patrząc po kodzie), to nie usuwają Ci się nowo utworzone linijki.

Nie dodajesz zdarzeń usuwania linków po utworzeniu nowej linijki. winksmiley.jpg

Albo wywołuj podpinanie zdarzeń ręcznie, albo użyj czegoś w stylu DOM Listener (wtyczka do jQ).
mecenas
  1. <a id=\"usun\" name=\"usun\" href=\"#\"><img style=\"border: none;\" src=\"images/del.gif\" alt=\"X\" title=\"USUŃ ODPOWIEDŹ\"></a>

to jest dodawane w spanie. I zanim nie zacznę dodawać przed pierwszym usunięciem - działa ok. Podejrzewam, że to kwestia mojej własnej głupoty...
no i jak już mówiłem:
  1. <?php
  2. $("#znaczniki").find("span").find("a").click(function(){
  3.        if($(this).attr("name")!="dodaj")
  4.        {
  5.            var wartosc=parseInt($("#ilosc_odp").val());
  6.            wartosc=wartosc-1;
  7.            $("#ilosc_odp").val(wartosc);
  8.            $(this).parent("span").remove();
  9.          }
  10. ?>

Być może jest jakaś lepsza opcja wyszukiwania tego linka (te, które wypróbowałem - nie bardzo chciały działać)
erix
Cytat
to jest dodawane w spanie. I zanim nie zacznę dodawać przed pierwszym usunięciem - działa ok.

Usuwanie dodajesz, ale zdarzeń do tego nie podpinasz.

Najlepiej daj cały HTML+JS gdzieś do testów.
mecenas
problem rozwiązany.
proszę o zamknięcie wątku.
erix - wielkie dzięki! naprowadziłeś mnie.
i oczywiście +pomógł smile.gif
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.