Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   click срабатывет не сколько раз (https://javascript.ru/forum/jquery/56437-click-srabatyvet-ne-skolko-raz.html)

artem543 16.06.2015 11:41

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

рони 16.06.2015 12:18

artem543,
неизвестно как вы назначаите клик и какие данные отправляите.
решение как всегда -- ставить клик только на таблицу - читать про делегирование -- использовать http://api.jquery.com/on/

artem543 17.06.2015 08:41

(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>';

вот код динамической таблицы, код отправки в бд я приводил выше

рони 17.06.2015 10:52

artem543,
неа всё также недостаточно информации
Цитата:

Сообщение от рони
неизвестно как вы назначаите клик

давайте я за вас раскажу: вы добавили строку и назначили клик -- но клик вы назначили одновременно всем строкам, а не только той которую добавили.
ненадо назначать строкам клик -- назначьте только таблице один раз
$("table").on("click", ".add1", function(){...})

artem543 17.06.2015 11:04

Цитата:

Сообщение от рони (Сообщение 375380)
artem543,
неа всё также недостаточно информации

давайте я за вас раскажу: вы добавили строку и назначили клик -- но клик вы назначили одновременно всем строкам, а не только той которую добавили.
ненадо назначать строкам клик -- назначьте только таблице один раз
$("table").on("click", ".add1", function(){...})

Нет, не так, если бы назначил всем строкам одновременно , то тогда бы при каждом нажатии отправлялись все строки, а у меня при каждом нажатии получается
click
click+click
click+click+click
и причем click на уже удаленные строки

рони 17.06.2015 11:16

artem543,
ок будем ждать телепата.

Vlasenko Fedor 17.06.2015 22:44

$('.add1').unbind().click( function () {

Может поможет

artem543 18.06.2015 08:42

Цитата:

Сообщение от Poznakomlus (Сообщение 375530)
$('.add1').unbind().click( function () {

Может поможет

спасибо, но к сожалению, не помогло

artem543 18.06.2015 09:02

В общем проблема оказалась другого рода
Таблица динамическая
нажатием на + создается еще одна строка
(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

рони 18.06.2015 09:48

artem543,
ваше описание по прежнему для телепата.


Часовой пояс GMT +3, время: 16:47.