• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak pobrać wartości z dynamicznie generowanych elementów?

Object Storage Arubacloud
0 głosów
150 wizyt
pytanie zadane 28 listopada 2019 w JavaScript przez Seqak Początkujący (420 p.)
Hej. Z JS i jQuery nie miałem wcześniej większego kontaktu, do tej pory bawiłem się głównie PHP. Napisałem prostego CRUD'a. Chcę dodać dwuetapowe usuwanie rekordu, czyli klikam na "kosz" wyskakuje alert, "Czy na pewno?" i dopiero następuje usunięcie rekordu z bazy. Robię to przy pomocy sweetalerów.

Sam mechanizm usuwania działa ok, tylko mam problem z przekazaniem wartości danego (wygenerowanego dynamicznie) elementu do jQuery. Za każdym razem pobiera wartość ( ID z bazy danych, włożone w atrybut value, nie jest to ID html ) tylko pierwszego rekordu na liście, a nie tego, przy którym faktycznie kliknę Delete.

Czy moglibyście nakierować mnie jak można wskazać js/jquery, że został kliknięty przycisk, akurat przy rekordzie np. Jan Kowalski, który jest gdzieś w losowym miejscu tabeli?

Z góry dzięki za pomoc. (Nie wrzucam na razie kodu, bo chyba pytanie tego nie wymaga. Jeśli kod jednak okaże się niezbędny dajcie znać. )

1 odpowiedź

+1 głos
odpowiedź 28 listopada 2019 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 29 listopada 2019 przez Seqak
 
Najlepsza

Czy moglibyście nakierować mnie jak można wskazać js/jquery, że został kliknięty przycisk, akurat przy rekordzie np. Jan Kowalski, który jest gdzieś w losowym miejscu tabeli?

Referencję do wciśniętego przycisku możesz pobrać z event.target.

Nie wrzucam na razie kodu, bo chyba pytanie tego nie wymaga. Jeśli kod jednak okaże się niezbędny dajcie znać.

Sam opis pomaga nakreślić problem, ale analiza kodu jest zazwyczaj niezbędna w znalezieniu przyczyny, dlaczego aplikacja działa inaczej niż powinna.

komentarz 29 listopada 2019 przez Seqak Początkujący (420 p.)

O super, dzięki poczytam o tym!

W między czasie ogarnąłem to w trochę inny sposób, który jest stosunkowo bardzo prosty i nie wiem czemu tak długo zajęło mi, żeby na to wpaść (Choć trochę nakierował mnie na to znajomy). Napiszę jak ja to rozwiązałem, może komuś się przyda kiedyś:

  1. Napisałem funkcję w JS, która przyjmuje jeden argument (id). W funkcji, na początku odpalam sweetalert.
  2. Jeśli potwierdzę wykonanie akcji, wysyłam ajaxem argument funkcji(id) do PHP. A skąd wziąłem argument dla funkcji?
  3. W HTML stworzyłem przycisk, na bazie inputu. Dodałem atrybut onClick, który wywołuje daną funkcję, jako argument wrzuciłem zmienną {{ client.id }}. Trzeba dobrze ustawić cudzysłowy - pojedyncze na zewnątrz, w podwójnych zmienna id.
  4.  Korzystam z silnika template'tów Twig, za jego pomocą wrzucam zmienne z PHP do kodu HTML. Stąd właśnie to {{ client.id }}.

Tym właśnie sposobem, można wskazywać wybrane przyciski w tabeli z rekordami. Może nie idealne, ale działa. Podrzucam trochę kodu:

JS:

function removeRow(id){
                swal({
                    title: "Are you sure?",
                    text: "Once deleted, you will not be able to recover this imaginary file!",
                    icon: "warning",
                    buttons: true,
                    dangerMode: true,
                    })
                    .then((willDelete) => {
                        if (willDelete) {
                            $.post("delete.php", {
                                id: id
                            }, function(){
                                location.reload();
                            });
                        } else {
                            
                        }
                    });
            };

  HTML:


<input type="button" onClick='removeRow("{{ item.id }}")'>

JSHolic, wielkie dzięki za czas i pomoc! ;)

 

 

Podobne pytania

0 głosów
2 odpowiedzi 206 wizyt
pytanie zadane 19 sierpnia 2019 w JavaScript przez bugs55 Obywatel (1,090 p.)
0 głosów
2 odpowiedzi 337 wizyt
pytanie zadane 26 stycznia 2018 w JavaScript przez Adam Arnold Początkujący (460 p.)
0 głosów
2 odpowiedzi 749 wizyt
pytanie zadane 14 marca 2016 w JavaScript przez ormu16 Gaduła (4,980 p.)

92,580 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...