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%)
-----


Id są unikalne, do każdej nazwy identyfikatora dodaję przez PHP identyfikator postu.

Wracając do tematu niestety nic mi to nie dało i w tym przypadku żadna akcja po prostu się nie wykonuje i przerzuca do strony zajmującej się skryptem php. Skleciłem coś takiego:

  1. $('#commentform').each(function(element){
  2. element.submit(function() {
  3.  
  4. var $form = element;
  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.  
  27. });


Ale to również nie działa. Nie użyłem metody event.preventDefault(); gdyż nawet po przeczytaniu dokumentacji nie za bardzo rozumiem czemu ona służy, a nawet po jej dodaniu nic to nie zmienia. Jakiś pomysł dlaczego pomimo zdefiniowania akcji 'submit', nie jest ona w ogóle wykonywana? (IMG:style_emoticons/default/sad.gif)

Kod HTML formularza:

  1. <form class="commentform" method="post" action="dodaj.html">
  2. <div style="width:100px; height:auto; text-align:right; float:left;">
  3. <p class="tresckomentarza" style="margin-top:4px;">Nick:  </p>
  4. <p class="tresckomentarza" style="margin-top:9px;">Treść:  </p>
  5. </div>
  6. <div style="width:192px; height:auto; float:left;">
  7. <input maxlength="30" type="input" placeholder=" twój nick" style="margin-top:2px; margin-bottom:0px; width:180px; height:18px; border:1px solid #fda21d; font-family:Tahoma; font-size:8pt; color:#57564e; " name="nickname" />
  8. <input maxlength="1000" type="input" placeholder=" treść komentarza" style="margin-top:2px; width:180px; height:18px; border:1px solid #fda21d; font-family:Tahoma; font-size:8pt; color:#57564e; " name="tresc" />
  9. </div>
  10. <div style="width:100px; height:auto; text-align:center; float:left;">
  11. <input type="submit" style="border:1px solid #fda21d; width:70px; margin-top:16px; " value="dodaj">
  12. </div>
  13. <input type="hidden" name="token" value="komentarz">
  14. <input type="hidden" name="idpostu" value="<? echo $row['id']; ?>">
  15. </form>


EDIT: zorientowałem się również że wszystkie 10 formularzy ma ten sam identyfikator więc zmieniłem je na klasę (edytując również pierwszą linijkę na $('.commentform').each(function(element){ ). To również nic nie dało.

Ten post edytował Barton 16.03.2012, 16:12:18
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: 9.10.2025 - 06:58