Napisałem taką funkcję obsługującą dodawanie komentarzy formularza:
$('#commentform').submit(function() { var $form = $(this); $inputs = $form.find("input, select, button, textarea"), serializedData = $form.serialize(); $inputs.attr("disabled", "disabled"); $.ajax( {type: 'POST', url: 'dodaj.html', dataType:'json', data: serializedData, success: function(dane) { $inputs.removeAttr("disabled"); $('.komentarzform' + dane.id).prepend('...'); var ile = $('#divkomentarz' + dane.id).css('height'); var iles = parseInt(ile); var ilenowy = $('#nowykomentarz' + dane.id).css('height'); var ilenowys = parseInt(ilenowy); var suma = iles + ilenowys; $('#divkomentarz' + dane.id).css('height', suma + 'px'); $('#nowykomentarz' + dane.id).slideDown("slow"); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); }}); return false; });
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