Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Click wewnątrz click
rafik73
post
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Witam

Mam taki kod:

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){ //1
  2.  
  3. $(document).on("click",".wyk_edit_button",function () {
  4.  
  5. var id_wykladu1 = $(this).parent().parent().find(".wyk_edit_id").val();
  6. var nr1 = $(this).parent().parent().find(".wyk_edit_nr").val();
  7. var nazwa1 = $(this).parent().parent().find(".wyk_edit").val().trim();
  8. var original_nazwa = $(this).parent().parent().find(".wyk_edit").prop("defaultValue") ;
  9.  
  10. if(nazwa1 == "")
  11. {
  12. $(".cont").text("POLE 'TYTUŁ' NIE MOŻE BYĆ PUSTE !");
  13. if (!$(".popup:visible").length) {
  14. $(".popup").fadeIn(1);
  15. $(".popup").fadeOut(2200) ;
  16. $(this).parent().parent().find(".wyk_edit").val(original_nazwa) ;
  17. }
  18. }
  19. else
  20. {
  21.  
  22. $(".contask").text("NAPEWNO ZAPISAĆ ZMIANY ?");
  23. $(".closeaskyestext").text("TAK");
  24. $(".closeasknotext").text("NIE");
  25.  
  26. if (!$(".popupask:visible").length) {
  27. $(".popupask").fadeIn(1);
  28. $(document).on("click",".closeaskyes",function () {
  29.  
  30. alert(id_wykladu1 + " " + nr1 + " " + nazwa1) ; // ten alert się wyświetla
  31. $(".popupask").fadeOut() ;
  32. }); //click yes
  33.  
  34. $(document).on("click",".closeaskno",function () {
  35. $(".popupask").fadeOut(800) ;
  36. }); //click no
  37.  
  38.  
  39. }
  40. } //else
  41. }); //click
  42. }); //document
[JAVASCRIPT] pobierz, plaintext


Działa on tak, że po kliknięciu przycisku wyk_edit_button w tabeli
pojawia się okienko popupask z prośbą o potwierdzenie akcji.
Powiedzmy, że tabelka zawiera liczby od 1 do 10.
Problem polega na tym, że jeśli kliknę np: pozycję 1 i potwierdzę akcję
alert wyświetla wartości zmiennych id_wykladu1 , nr1 oraz nazwa1 .
Jeśli następnie kliknę np: 4 to alert wyświetli najpierw poprzednie wartości dla 1 a po kliknięciu ok w alercie
pojawia się następny i wyświetla zawartość 4. Wygląda to tak jakby skrypt pamiętał wybrane
wartości i wyświetlał je po kolei. Jak usunąć to zapamiętywanie?
Dziękuję z góry za zainteresowanie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
viking
post
Post #2





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

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


Daj jakiś przykład działający na jsfiddle. Po co wszystko do document przypinasz?
Go to the top of the page
+Quote Post
rafik73
post
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Z jsfiddle może być skomplikowana sprawa - dane w tabeli są wyciągane z mysql w pętli, ale się postaram jakąś symulację zrobić.
Zauważyłem, że nawet jak kliknę .closeaskno to skrypt zapamiętuje dane zmiennych.


Ok. Udało się wrzucić do jsfiddle:

https://jsfiddle.net/y34ux16z/2/

Kliknij w test pojawi się kwadracik obok pola tekstowego, kliknij go i potwierdź
w popupie. Powtórz kilka razy a zobaczysz niepożądany efekt.

Tzn. zagnieżdża się

Ten post edytował rafik73 4.08.2017, 07:35:52
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


click na yes i no wcisnąłeś w obsługę click .wyk_edit_button.
Go to the top of the page
+Quote Post
rafik73
post
Post #5





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Do yes i no zmieniłem on na one i teraz działa.
https://jsfiddle.net/rafik73/y34ux16z/4/

Cytat(trueblue @ 4.08.2017, 08:51:11 ) *
click na yes i no wcisnąłeś w obsługę click .wyk_edit_button.


Musiałem ustawić jakąś sekwencje zdarzeń.
Go to the top of the page
+Quote Post
viking
post
Post #6





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

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


Przy każdym kliknięciu w guzik po prawej tworzysz nowy listener dla tego okienka. Lepiej by było uporządkować ten kod.
Go to the top of the page
+Quote Post
rafik73
post
Post #7





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Cytat(viking @ 4.08.2017, 09:08:35 ) *
Przy każdym kliknięciu w guzik po prawej tworzysz nowy listener dla tego okienka. Lepiej by było uporządkować ten kod.


Można jakieś sugestie ?


Problem nie rozwiązany do końca. Działa tylko przy wyświetlaniu alert.
Docelowo zamiast alert jest kod wysyłający ajaxem wartości zmiennych.
I jak się pewnie domyślacie wysyła wszystkie zapamiętane (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
viking
post
Post #8





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

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


Znajdź najbliższego stałego rodzica dla każdego z tych klikalnych elementów, zamień za document. closeasyes i no przenieś poza ifa który zawiera pierwotnego klika. Jak chcesz przekazać coś dodatkowo możesz z tego zrobić funkcję albo po prostu gdzieś w kodzie zapisywać aktualnie kliknięty element i z niego wyciągać dane.
Go to the top of the page
+Quote Post
rafik73
post
Post #9





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Zmieniłem document

https://jsfiddle.net/rafik73/y34ux16z/5/

i tu dalej schody... (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
viking
post
Post #10





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

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


Nie widzę żadnych zmian.
Go to the top of the page
+Quote Post
rafik73
post
Post #11





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Wstawiłem zamiast document .wyk_content. Przy kliku yes i no został document,
ponieważ używam szablonu .popupask dla innych zdarzeń w kodzie i muszę mieć do niego dostęp w całym dokumencie.

https://jsfiddle.net/rafik73/y34ux16z/6/

Ten post edytował rafik73 4.08.2017, 09:12:31
Go to the top of the page
+Quote Post
viking
post
Post #12





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

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


Ale kliki dalej zawarte są wewnątrz innych.
Go to the top of the page
+Quote Post
rafik73
post
Post #13





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


no właśnie tu się małe schody zaczynają...
Go to the top of the page
+Quote Post
viking
post
Post #14





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

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


https://jsfiddle.net/y34ux16z/7/

Zrobiłem to tylko dlatego w ten sposób żeby ci pokazać co można jeszcze robić. Tu wykorzystany jako pub/sub. Natomiast, skoro to okno wykorzystujesz wszędzie, to powinno być ładnie zapisane w nowym pliku, z jakąś sensowną logiką.
Go to the top of the page
+Quote Post
rafik73
post
Post #15





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Serdeczne dzięki. Przeanalizuję ten kod wnikliwie. JS jest u mnie w dużych powijakach, muszę sięgnąć do podstaw, bo braki u mnie wielkie.
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: 23.08.2025 - 17:10