Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery]onlick, zmiana pola z disabled na edytowalne + update, trochę działa, ale nie do końca
jacke
post 22.07.2013, 17:27:50
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 15.03.2010

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


Witam,

Mój kod:
jQuery:
  1. <script language="javascript">
  2. $(document).ready(function()
  3.  
  4. {
  5. $("#control").toggle(
  6. function ()
  7. {
  8. $('#target').removeAttr("disabled");
  9. $('#control').empty().append("Save");
  10. $('#edit_field').load("edit.php");
  11. $.ajaxSetup({ cache: false });
  12.  
  13. },
  14. function ()
  15. {
  16. $('#target').attr("disabled", true);
  17. $('#control').empty().append("Edit");
  18. $('#edit_field').load("display.php");
  19. var refreshId = setInterval(function() {
  20. $("#edit_field").load('display.php');
  21. }, 1000);
  22. $.ajaxSetup({ cache: false });
  23. });
  24. });
  25. </script>


HTML:
  1. <div id="edit_field"></div><a href="#" id="control" />Edit</a>


+ pliki edit.php i display.php z odpowiednimi zapytaniami do bazy.

Co chciałem osiągnąć? Po załadowaniu strony, pole tekstowe wyświetla dane z pliku display (+ odświeżanie 1000ms). Po kliknięciu w <a> w to samo miejsce ładuje się plik edit (bez odświeżania), po ponownym kliknięciu w <a> rekord jest zapisywany/aktualizowany w bazie danych i pole wraca do strony display która wyświetla zaktualizowany rekord. Oczywiście nie działa tak jak chcę. Po pierwsze nie bardzo jestem w stanie sprawić by na dzieńdobry się pojawiało pole display (mogę od kopa z odświeżaniem wstawić w diva, ale po kliknięciu na edytuj, dalej się odświeża), a drugi problem to taki, że po kliknięciu w edit, pole się zmienia z powrotem na display po sekundzie. Pomocy!
Go to the top of the page
+Quote Post
outsider
post 22.07.2013, 19:19:50
Post #2





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

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


jeśli chcesz wyłączyć interval który ustawiłeś to:
http://www.w3schools.com/jsref/met_win_clearinterval.asp

ustawiłeś load co sekundę, zrób clearInterval po kliknięciu edit i będzie git smile.gif
Toggle wywołuje się dopiero po kliknięciu, także po załadowaniu strony nie masz tego odświeżania. Skopiuj ten setInterval przed toggle.
Go to the top of the page
+Quote Post
jacke
post 22.07.2013, 20:37:57
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 15.03.2010

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


Danke, działa prawie bez zarzutu. Tyle że po drugim kliknięciu nie wraca do odświeżania... bo po pierwszym kliknięciu każe mu przestać.

  1. $(document).ready(function()
  2. {
  3. var refreshId = setInterval(function() {
  4. $("#edit_field").load('display.php');
  5. }, 1000);
  6. $("#control").toggle(
  7. function ()
  8. {
  9. $('#target').removeAttr("disabled");
  10. $('#control').empty().append("Save");
  11. $('#edit_field').load("edit.php");
  12. window.clearInterval(refreshId);
  13. $.ajaxSetup({ cache: false });
  14. },
  15. function ()
  16. {
  17. $('#target').attr("disabled", true);
  18. $('#control').empty().append("Edit");
  19. $('#edit_field').load("display.php");
  20. window.setInterval(refreshId, 1000);
  21. $.ajaxSetup({ cache: false });
  22. });
  23. });


Jak ustawiam z powrotem interval na 1000 to nie odświeża. Mniemam że coś tu przekombinowałem.
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: 31.07.2025 - 07:21