Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem ze wskazaniem konkretnego formularza w jQuery
Barton
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 2
Dołączył: 26.10.2008

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


Witam,

Napisałem taką funkcję obsługującą dodawanie komentarzy formularza:

  1. $('#commentform').submit(function() {
  2.  
  3. var $form = $(this);
  4. $inputs = $form.find("input, select, button, textarea"),
  5. serializedData = $form.serialize();
  6. $inputs.attr("disabled", "disabled");
  7.  
  8. $.ajax( {type: 'POST', url: 'dodaj.html', dataType:'json', data: serializedData, success: function(dane) {
  9.  
  10. $inputs.removeAttr("disabled");
  11. $('.komentarzform' + dane.id).prepend('...');
  12. var ile = $('#divkomentarz' + dane.id).css('height');
  13. var iles = parseInt(ile);
  14. var ilenowy = $('#nowykomentarz' + dane.id).css('height');
  15. var ilenowys = parseInt(ilenowy);
  16. var suma = iles + ilenowys;
  17. $('#divkomentarz' + dane.id).css('height', suma + 'px');
  18. $('#nowykomentarz' + dane.id).slideDown("slow");
  19.  
  20. }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); }});
  21.  
  22. return false;
  23.  
  24. });


Problem jest taki, że działa ona tylko w pierwszym divie z komentarzami, czyli odnośnie pierwszego formularza. Zakładając że mam na stronie 10 formularzy, po dodaniu komentarza za pomocą pierwszego komentarz się pojawia tam gdzie powinien. Korzystając z jakiegokolwiek innego, komentarz również dodaje się tam gdzie powinien, ale po przeładowaniu strony, co jest bardzo dziwne gdyż plik PHP obsługujący dodawanie elementów do bazy nie ma nawet nagłówka kierującego z powrotem na stronę główną. Odnoszę wrażenie że to przez brak odniesienia do konkretnego formularza. Co przypisać zmiennej $form żeby zawsze odnosiła się do odpowiedniego

Ten post edytował Barton 16.03.2012, 13:30:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Barton
post
Post #2





Grupa: Zarejestrowani
Postów: 70
Pomógł: 2
Dołączył: 26.10.2008

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


Dzięki za szybką odpowiedź. Teraz moja funkcja wygląda tak:

  1. $('#commentform')each(function(element) {
  2. element.submit(function() {
  3.  
  4. var $form = $(this);
  5. $inputs = $form.find("input, select, button, textarea"),
  6. serializedData = $form.serialize();
  7. $inputs.attr("disabled", "disabled");
  8.  
  9. $.ajax( {type: 'POST', url: 'dodaj.html', dataType:'json', data: serializedData, success: function(dane) {
  10.  
  11. $inputs.removeAttr("disabled");
  12. $('.komentarzform' + dane.id).prepend('...');
  13. var ile = $('#divkomentarz' + dane.id).css('height');
  14. var iles = parseInt(ile);
  15. var ilenowy = $('#nowykomentarz' + dane.id).css('height');
  16. var ilenowys = parseInt(ilenowy);
  17. var suma = iles + ilenowys;
  18. $('#divkomentarz' + dane.id).css('height', suma + 'px');
  19. $('#nowykomentarz' + dane.id).slideDown("slow");
  20.  
  21. }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); }});
  22.  
  23. return false;
  24.  
  25. });
  26. });


I w tym momencie strona odświeża się przy każdym formularzu, nawet tym pierwszym. (IMG:style_emoticons/default/sad.gif) Poza tym wciąż się zastanawiam jakim cudem strona się przeładowuje gdyż poza JavaScriptem nie ma żadnych instrukcji wracających na stronę główną.

Ten post edytował Barton 16.03.2012, 13:42:40
Go to the top of the page
+Quote Post

Posty w temacie


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: 13.10.2025 - 00:34