Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] jQuery - zdarzenia na nowo dodanych elementach
mbak
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.07.2014

Ostrzeżenie: (0%)
-----


Witam mam problem z jQuery... otóż chcę żeby w trakcie uzupełniania formularza dodawały się do niego nowe pola:
mam trzy pola tekstowe -> po kliknięciu w pierwsze z nich (z klasą dodaj-pole) zostaje wstawiona kolejna linijka z trzema następnymi polami -> w następnej linijce to samo, po kliknięciu dodaje się nowa linijka itd. do momentu aż wprowadzę tyle danych ile potrzebuje. Niby działa, ale nowa linijka wstawia się tylko po kliknięciu na pierwsze pole pierwszej linijki.
Przy kliknięciu w drugiej (nowo dodanej) linijce nic się nie dzieje - tak jakby jQuery wogóle nie odczytywało kliknięcia w to pole.
Dodam że skrypt czyta kliknięcie w pole input o klasie dodaj-pole. Oto mój kod:

  1. <div class="oc">
  2. <div class="oc1">
  3. 1.
  4. </div>
  5. <div class="oc1">
  6. <input placeholder=" Wpisz ocenę" class="dodaj-pole" name="nazwa1" value="" id="nazwa1" type="text">
  7. <p class="ukryty">2</p>
  8. </div>
  9. <div class="oc1">
  10. <input placeholder=" Wpisz ocenę słownie" name="nazwa_slownie1" value="" id="nazwa_slownie1" type="text">
  11. </div>
  12. <div class="oc1">
  13. <input placeholder=" Wpisz ocenę liczbowo" name="ocena_liczbowo1" value="" id="ocena_liczbowo1" type="text">
  14. </div>
  15. </div>
  16. <br class="koniec-form">


  1. function dodaj (event) {
  2.  
  3. var id = $(this).attr('id');
  4.  
  5. var numer = $('#'+id+' + p').text();
  6.  
  7. console.log(id);
  8.  
  9. console.log(numer);
  10.  
  11. if(numer!='') {
  12.  
  13. nastepny = parseInt(numer) + 1;
  14.  
  15. //tutaj wstawienie kolejnej linijki formularza:
  16.  
  17. $('br.koniec-form').before('<div class="oc"><div class="oc1">'+numer+'.</div><div class="oc1"><input placeholder=" Wpisz ocenę" class="dodaj-pole" name="nazwa'+numer+'" value="" id="nazwa'+numer+'" type="text"> <p class="ukryty">'+nastepny+'</p> </div><div class="oc1"><input placeholder=" Wpisz ocenę słownie" class="dodaj-pole" name="nazwa_slownie'+numer+'" value="" id="nazwa_slownie'+numer+'" type="text"></div><div class="oc1"><input placeholder=" Wpisz ocenę" class="dodaj-pole" name="ocena_liczbowo'+numer+'" value="" id="ocena_liczbowo'+numer+'" type="text"></div></div>');
  18.  
  19. $('#'+id+' + p').text('');
  20. }
  21.  
  22. }
  23.  
  24. $("input.dodaj-pole").on("mousedown", dodaj);


Czy ktoś poratuje mnie? (IMG:style_emoticons/default/smile.gif)




EDIT:
Chyba rozwiązałem problem:
Zmieniłem odczytanie zdarzenia w jQ na takie:
  1. $(document).on("keypress", ".dodaj-pole", dodaj);


Póki co działa bez problemu (IMG:style_emoticons/default/smile.gif)

Ten post edytował mbak 27.04.2015, 10:09:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W chwili gdy inicujesz jquery nie ma jeszcze elementów więc nowo powstałe nie mają zdarzeń. Przypinać nasłuch do document nie ma żadnego sensu, znajdź wspólnego rodzica. Tu masz więcej o temacie: http://wwwgo.pl/article/15/jquery%2C_zdarz...e_metoda_%24.on
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 16:25