Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Autokomplete nie działa po ajax callback
rafik73
post 4.10.2017, 20:02:52
Post #1





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

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


Witam
Mam problem z działaniem autocomplete. To mój kod:

[JAVASCRIPT] pobierz, plaintext
  1. $(function() {
  2.  
  3. $(".wyklad_search").autocomplete({
  4.  
  5. source: "wyklad_search.php",minLength:1,
  6. focus: function(event, ui) {
  7.  
  8. event.preventDefault();
  9.  
  10. },
  11. select: function(event, ui) {
  12.  
  13. event.preventDefault();
  14.  
  15. $(this).val(ui.item.nr);
  16. $(".id_wyklad_search").val(ui.item.value);
  17.  
  18. //********************************************************************************
    ********************8
  19. var action_id = 5;
  20. var zebtest = $(this).parent().parent().parent().find(".zebtest").val();
  21. var datatest = $(this).parent().parent().parent().find(".datatest").val();
  22.  
  23.  
  24. $.ajax({ //ajax opiekun
  25. type : "POST",
  26. url : "zeb_edit_action.php",
  27. data : {
  28. ajax_action_id : action_id,
  29. ajax_datatest : datatest,
  30. ajax_zebtest : zebtest,
  31.  
  32. },
  33. context: this,
  34.  
  35. success : function(zeb_edit_record_after_change) {
  36.  
  37. $("#ajax_zeb_edit_record").html(zeb_edit_record_after_change);
  38.  
  39. },
  40. complete : function(r) {
  41.  
  42. },
  43. error: function(error) {
  44.  
  45. }
  46. });
  47.  
  48. }
  49.  
  50.  
  51. });
  52. });
[JAVASCRIPT] pobierz, plaintext


Za pierwszym razem wszystko działa ok, po wybraniu elementu z listy autocomplete wysyła dane
i zapisuje do bazy danych, potem przeładowuje zawartość diva ajax_zeb_edit_record.
Ale gdy chcę zrobić to ponownie - autocomplete nie działa. "Odżywa" po przeładowaniu strony.
Jak go zmusić do ciągłej pracy?
Go to the top of the page
+Quote Post
trueblue
post 4.10.2017, 21:45:54
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Autocomplete czy ajax w autocomplete? Sprawdź konsolę przeglądarki. Być może wypełniając #ajax_zeb_edit_record usuwasz jakieś elementy, z których pobierasz dane w autocomplete.


--------------------
Go to the top of the page
+Quote Post
rafik73
post 5.10.2017, 07:16:00
Post #3





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

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


Teraz jestem w pracy,ale pamiętam strukturę.
Przykładowo:
Plik main.php zawiera inkludowany plik ajax_change.php
Plik ajax_change.php jest aktualuzowany przez ajax i zawiera się w divie
ajax_zeb_edit_record. Skrypt autocomplete jest zawarty
w pliku ajax.js i jest inkludowany do main.php.
Może powodem jest to że ajax.js jest inkludowany poza ajax_change.php?
Go to the top of the page
+Quote Post
viking
post 5.10.2017, 07:35:29
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Jeśli zmieniasz strukturę html to mozliwe że odpinasz zdarzenia wcześniej przypisane.


--------------------
Go to the top of the page
+Quote Post
rafik73
post 8.10.2017, 18:53:13
Post #5





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

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


Przeniesienie inkludowania rozwiązało sprawę. Dziękuje panowie za naprowadzenie na właściwy kurs. Temat do zamknięcia. Pozdrawiam.

Odświeżam
Jeden problem rozwiązany ale pojawił się drugi. Co prawda autocomplete działa bez zarzutu ale pozostały kod nie.
W tym samym miejscu co autocomplete jest kod obsługujący zdarzenie change selecta.
Po zmianie miejsca inkludowania na razy tak jakby jquery wpadał w pętle i powtarza kilkukrotnie polecenie ajax
powodując powielanie rekordów. Sam już nie wiem, gdzie inkludować.
Go to the top of the page
+Quote Post
viking
post 8.10.2017, 21:12:14
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Jeśli miejsce includowania zmienia działanie to znaczy że brak ci podstaw czyli np delegacji zdarzeń. Php wykonuje się wcześniej, generuje kod na którym dopiero js pracuje.


--------------------
Go to the top of the page
+Quote Post
rafik73
post 9.10.2017, 07:07:30
Post #7





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

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


Dorzuciłem


[JAVASCRIPT] pobierz, plaintext
  1. $(document).on("focus",".wyklad_search"
[JAVASCRIPT] pobierz, plaintext



Przywróciłem poprzednie miejsce include i jest jak należy.
Oparte na:

http://hrabstwo.net/javascript-jquery-even...ie-i-delegacja/

Kolego viking, aż tak źle to nie jest. Zabrnąłem w myśleniowy kozi róg.
Ale cały czas się uczę.
Pozdrawiam
Go to the top of the page
+Quote Post
viking
post 9.10.2017, 07:36:17
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Fajnie jak jeszcze nie będziesz przypinał do document wszystkich zdarzeń. https://prophp.pl/article/28/propagacja_i_d...en_w_javascript


--------------------
Go to the top of the page
+Quote Post
rafik73
post 9.10.2017, 12:31:58
Post #9





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

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


Dzięki, bardzo pomocny artykuł smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 16:38