click срабатывет не сколько раз
$('.add1').click( function () { // получаем данные для отправки в БД из полей var var $(this).parent().remove(); $.ajax({ type: "POST", url: "insert_data.php", dataType: JSON, data: "& + "& + "& + "& + "& + "& success: function() { alert("Запись добавленна"); return false; } Добрый день! Подскажите как решить проблему, есть динамическая таблица. При заполнении строки и нажатии сохранить(напротив этой строки) срабатывает функция записи в базу и удаления этой строки. Проблема появляется, когда нужно сохранить несколько строк по очереди. При первом запуске все нормально, при втором нажатии отправляется 2. Пустое и заполненное при следующем нажатии уже 3 строки и т. д. А когда сохраняешь последню строку то записыается в бд количество строк изначчально созданных в таблице со значением undefined |
artem543,
неизвестно как вы назначаите клик и какие данные отправляите. решение как всегда -- ставить клик только на таблицу - читать про делегирование -- использовать http://api.jquery.com/on/ |
(document).ready(function(){ $('.add').click(function(){ var str = '<tr><td class="add1 del"><button >сохранить</button></td><td><input action="#" id="country" class="container" name="ADDRESS" type="text" value="" align="LEFT" size="20" maxlength="20" autocomplete="off" /> </td><td><input id="abbr" name="CLIENT" type="text" value="" align="LEFT" size="20" maxlength="20" /></td><td><input id="calendar" name="DATE" value="" type="text"/></td><td><input id="vrem" name="TAME" type="text" value="" align="LEFT" size="20" maxlength="20" /></td><td><input id="vod" name="DRIVER" type="text" value="" align="LEFT" size="20" maxlength="20" autocomplete="off" /></td></td></td><td><input id="koment" name="COMMENTS" type="text" value="" align="LEFT" size="20" maxlength="20" /> </td><td class="del"><button >Удалить</button></td></tr>'; вот код динамической таблицы, код отправки в бд я приводил выше |
artem543,
неа всё также недостаточно информации Цитата:
ненадо назначать строкам клик -- назначьте только таблице один раз $("table").on("click", ".add1", function(){...}) |
Цитата:
click click+click click+click+click и причем click на уже удаленные строки |
artem543,
ок будем ждать телепата. |
$('.add1').unbind().click( function () { Может поможет |
Цитата:
|
В общем проблема оказалась другого рода
Таблица динамическая нажатием на + создается еще одна строка (document).ready(function(){ $('.add').click(function(){ var str = '<tr><td class="add1 del"><button >сохранить</button></td><td><input action="#" id="country" class="container" name="ADDRESS" type="text" value="" align="LEFT" size="20" maxlength="20" autocomplete="off" /> </td><td><input id="abbr" name="CLIENT" type="text" value="" align="LEFT" size="20" maxlength="20" /></td><td><input id="calendar" name="DATE" value="" type="text"/></td><td><input id="vrem" name="TAME" type="text" value="" align="LEFT" size="20" maxlength="20" /></td><td><input id="vod" name="DRIVER" type="text" value="" align="LEFT" size="20" maxlength="20" autocomplete="off" /></td></td></td><td><input id="koment" name="COMMENTS" type="text" value="" align="LEFT" size="20" maxlength="20" /> </td><td class="del"><button >Удалить</button></td></tr>'; строк можно создать любое кол-во Около каждой строки есть кнопка сохранить $('.add1').click( function () { // получаем данные для отправки в БД из полей var var $(this).parent().remove(); $.ajax({ type: "POST", url: "insert_data.php", dataType: JSON, data: "& + "& + "& + "& + "& + "& success: function() { alert("Запись добавленна"); return false; } допустим я создаю строки номер строки значение 1 11111 2 22222 3 33333 4 44444 Если я нажимаю сохранить четвертую строку сохраняется первая строка столько раз сколько создано строк Если я нажимаю сохранить первую строку он ее нормально сохраняет, нажимаю после вторую, он уже сохранят и вторую и третью, третью нажимаю сохраняется 3,4,5 , Когда сохраняю последнюю, он записывает ее значение и + количество предыдущих строк со значением undefined |
artem543,
ваше описание по прежнему для телепата. |
Часовой пояс GMT +3, время: 16:47. |