• 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?

0 głosów
278 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,170 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 422 wizyt
pytanie zadane 19 sierpnia 2019 w JavaScript przez bugs55 Obywatel (1,090 p.)
0 głosów
2 odpowiedzi 552 wizyt
pytanie zadane 26 stycznia 2018 w JavaScript przez Adam Arnold Początkujący (460 p.)

93,774 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,378 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...