Отправка формы через ajax, не могу найти ошибку
Доброго времени суток. Ну судите за быдлокодниг - всего пару дней как начал работать с jquery. И так, есть таблица с ячейками class="cell" и есть код:
<script type="text/javascript"> $(document).ready(function(){ $(".cell").click(function(){ var edt = $(this); var edth =$(this).html(); var list = $(this).find('textarea'); if (list.length == 0) { var nid =$(this).attr("id") $(this).html('<form id="form'+ nid +'"><input type="hidden" name="celladdr" value="' + nid + '"> <textarea name="f'+ nid +'"cols=25 row="4">' + edth + '</textarea></form><img class="sb" src="save.png">') $('.sb').on('click', function(){ var save = $(this).parent().html(); var msg = $('#form'+nid).serialize(); $.ajax({ type: 'POST', url: 'mod.php', data: msg, success: function(data) { alert(data); $(edt).html(data); }, error: function(xhr, str){ alert('Возникла ошибка: ' + xhr.responseCode); } }); }); } }); </script> Собственно алгоритм такой, при клике по ячейке, в ячейке появляется textarea в который уже вбито значение ячейки и кнопка для сохранения - изображение class="sb". По клику на class="sb" происходит отправка формы из ячейки с помощью ajax. Всё работает. Но есть одно хреновое НО. При кликах поочерёдно по нескольким ячейкам, и после этого при нажатии кнопки сохранения происходит отправка всех редактируемых ячеек, хотя они находятся в разных формах. А нужно отправлять по одной. Помогите, а то к концу недели забухаю от безисходности.)) |
Код нужно форматировать, читать его неудобно.
А зачем в каждую ячейку по собственной форме для одного поля? Может быть форма все-таки одна, а поля в нее добавляются? |
Задача -изменять только одну ячейку, без изменения всей строки. А форматирование форум съел.
Собственно, проблема в том, что при одновременном редактировании нескольких ячеек и нажатии кнопки сохранения в любой из них, начинают последовательно отравляться все формы из редактируемых ячеек причём в каком-то диком порядке |
Цитата:
|
Цитата:
<script type="text/javascript"> $(document).ready(function(){ $(".cell").click(function(){ var edt = $(this); var edth =$(this).html(); var list = $(this).find('textarea'); if (list.length == 0) { var nid =$(this).attr("id") $(this).html('<form id="form'+ nid +'"><input type="hidden" name="celladdr" value="' + nid + '"> <textarea name="f'+ nid +'"cols=25 row="4">' + edth + '</textarea></form><img class="sb" src="save.png">') $('.sb').on('click', function(){ var save = $(this).parent().html(); var msg = $('#form'+nid).serialize(); $.ajax({ type: 'POST', url: 'mod.php', data: msg, success: function(data) { alert(data); $(edt).html(data); }, error: function(xhr, str){ alert('Возникла ошибка: ' + xhr.responseCode); } }); }); } }); </script> |
LAOS,
прокол в строке 12 $('.sb', this).on('click', добавьте красное иначе при каждом клике вы умножаите прежние клики |
Часовой пояс GMT +3, время: 01:21. |