Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2015, 11:41
Интересующийся
Отправить личное сообщение для artem543 Посмотреть профиль Найти все сообщения от artem543
 
Регистрация: 09.04.2015
Сообщений: 13

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
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2015, 12:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

artem543,
неизвестно как вы назначаите клик и какие данные отправляите.
решение как всегда -- ставить клик только на таблицу - читать про делегирование -- использовать http://api.jquery.com/on/
Ответить с цитированием
  #3 (permalink)  
Старый 17.06.2015, 08:41
Интересующийся
Отправить личное сообщение для artem543 Посмотреть профиль Найти все сообщения от artem543
 
Регистрация: 09.04.2015
Сообщений: 13

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

вот код динамической таблицы, код отправки в бд я приводил выше
Ответить с цитированием
  #4 (permalink)  
Старый 17.06.2015, 10:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

artem543,
неа всё также недостаточно информации
Сообщение от рони
неизвестно как вы назначаите клик
давайте я за вас раскажу: вы добавили строку и назначили клик -- но клик вы назначили одновременно всем строкам, а не только той которую добавили.
ненадо назначать строкам клик -- назначьте только таблице один раз
$("table").on("click", ".add1", function(){...})
Ответить с цитированием
  #5 (permalink)  
Старый 17.06.2015, 11:04
Интересующийся
Отправить личное сообщение для artem543 Посмотреть профиль Найти все сообщения от artem543
 
Регистрация: 09.04.2015
Сообщений: 13

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

давайте я за вас раскажу: вы добавили строку и назначили клик -- но клик вы назначили одновременно всем строкам, а не только той которую добавили.
ненадо назначать строкам клик -- назначьте только таблице один раз
$("table").on("click", ".add1", function(){...})
Нет, не так, если бы назначил всем строкам одновременно , то тогда бы при каждом нажатии отправлялись все строки, а у меня при каждом нажатии получается
click
click+click
click+click+click
и причем click на уже удаленные строки
Ответить с цитированием
  #6 (permalink)  
Старый 17.06.2015, 11:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

artem543,
ок будем ждать телепата.
Ответить с цитированием
  #7 (permalink)  
Старый 17.06.2015, 22:44
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

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

Может поможет
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2015, 08:42
Интересующийся
Отправить личное сообщение для artem543 Посмотреть профиль Найти все сообщения от artem543
 
Регистрация: 09.04.2015
Сообщений: 13

Сообщение от Poznakomlus Посмотреть сообщение
$('.add1').unbind().click( function () {

Может поможет
спасибо, но к сожалению, не помогло
Ответить с цитированием
  #9 (permalink)  
Старый 18.06.2015, 09:02
Интересующийся
Отправить личное сообщение для artem543 Посмотреть профиль Найти все сообщения от artem543
 
Регистрация: 09.04.2015
Сообщений: 13

В общем проблема оказалась другого рода
Таблица динамическая
нажатием на + создается еще одна строка
(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
Ответить с цитированием
  #10 (permalink)  
Старый 18.06.2015, 09:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
click вызывается несколько раз SKLNSK jQuery 7 29.05.2015 13:49
Определить сколько раз страница прокручена до конца. dolte Events/DOM/Window 1 19.09.2013 22:21
Событие click вызывается несколько раз. Почему? rusbody jQuery 22 21.08.2012 16:17
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 20:37
live click выполняется несколько раз hara jQuery 9 09.06.2010 10:58