Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery]onlick, zmiana pola z disabled na edytowalne + update
Forum PHP.pl > Forum > Przedszkole
jacke
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!
outsider
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.
jacke
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.