Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2019, 15:28   #1
Paulwoop
Новичок
Джуниор
 
Регистрация: 07.10.2019
Сообщений: 3
По умолчанию Почему при добавлении строки не отрабатывает скрипт?

Доброго времени суток!

Друзья помогите пожалуйста. Суть такая. Есть таблица и после таблицы при нажатии на кнопку добавляется еще одна строка данной таблицы с необходимыми мне данными. В одной из ячеек новой строки есть поле select с выбором меры. Пользователь вводит название меры и скрипт использует автозаполнение.

Не работает именно автозаполнение.

Использование $('.js-example-basic-single').select2(); ведет на готовую библиотеку https://select2.org/ (не реклама. реально библиотека) - и вот именно она не работает при добавлении новой строки. Почему? Спасайте

Пример работы можете посмотреть туть

https://jsfiddle.net/paulwoop/yLoehrbk/1/

там все из библиотек кроме обработки нажатия на добавить еще строку. Как видите первая строка работает , все последующие нет
Paulwoop вне форума Ответить с цитированием
Старый 07.10.2019, 16:09   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

во-первых, Вы в скрипте добавления используете элемент с ID = 'ingmax'
где он в коде ?


Код:
 /* Добавление ингредиента */
$(document).on("click", "#piu", function (){

var cnt = parseInt($('#ingmax').val()) + 1;
    $('#ingmax').val(cnt);
    var $select = $(ingredientGroupsManager.select).clone();
        $select.find('select').attr('name', 'ingridient[' + cnt + '][group_id]');

    var txt = _.template($('#tpl-ingrow').html(), {
      id: cnt,
      groups_select: $('<div/>').append($select).html()
    });
    $('tr.ingrow').last().after(txt);
    $('#ing' + cnt).ajaxAutocomplete().bind('autocomplete', ingredientSelect);
    $('#ingrow' + cnt + ' .td-measure select').change(measureChange);
    ingNumeric();

 });
во-вторых, не могу понять, что делают в этом вашем скрипте добавления строки
Код:
var $select = $(ingredientGroupsManager.select).clone();
ну и последнее, я бы после добавления (только корректного) вызвал для вновь добавленного
узла
Код:
$('#Тут_новый_ID').select2();
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.10.2019, 16:19   #3
Paulwoop
Новичок
Джуниор
 
Регистрация: 07.10.2019
Сообщений: 3
По умолчанию

Добрый день, Serge_Bliznykov. Благодарю Вас за отклик!

"Вы в скрипте добавления используете элемент с ID = 'ingmax'" - это скрытое поле для отсчета добавляемых элементов. по умолчанию оно равно 3
<input type="" name="ingmax" id="ingmax" value="3">

var $select = $(ingredientGroupsManager.select).c lone(); - это группировка по ингредиентам

а вот последнее не понял что вы имеете ввиду. можете тут расписать
Спасибо!
Paulwoop вне форума Ответить с цитированием
Старый 07.10.2019, 16:19   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

короче, так.

в HTML добавьте строчку для хранения ID
Код:
    <form name="add_my_recepts" action="" method="POST" enctype="multipart/form-data">

    <input type="hidden" id="ingmax" name="ingmax" value="3">

    <table class="data-new-item" id="ingtable">
		<tbody>
в скрипте измените код на такой:
Код:
/* Добавление ингредиента */
$(document).on("click", "#piu", function (){
    var cnt = parseInt($('#ingmax').val()) + 1;
    $('#ingmax').val(cnt);
    
    var $select = $(ingredientGroupsManager.select).clone();
    $select.find('select').attr('name', 'ingridient[' + cnt + '][group_id]');

    var txt = _.template($('#tpl-ingrow').html(), {
      id: cnt,
      groups_select: $('<div/>').append($select).html()
    });
    $('tr.ingrow').last().after(txt);

    $('.js-example-basic-single').select2();

    //$('#ing' + cnt).ajaxAutocomplete().bind('autocomplete', ingredientSelect);
    $('#ingrow' + cnt + ' .td-measure select').change(measureChange);
    ingNumeric();

 });
это для затравки. Так заработает, дальше уже налаживайте в коде то, что Вам нужно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.10.2019, 16:31   #5
Paulwoop
Новичок
Джуниор
 
Регистрация: 07.10.2019
Сообщений: 3
По умолчанию

Спасибо!
Paulwoop вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не отрабатывает запрос GET в Indy компонентах? prodan_andry Работа с сетью в Delphi 0 15.01.2017 02:18
почему не отрабатывает запрос maxxyz Microsoft Office Access 2 05.12.2015 11:44
Почему при добавлении нового столбца Условное Форматирование рвется? RISagitov Microsoft Office Excel 2 27.11.2015 16:55
Почему кнопка в добавлении комментария выполняет функцию обновления страницы? Юсуп PHP 3 05.02.2013 21:07
почему не сохранются данные при N-ом добавлении строк ubun PHP 9 15.12.2011 08:01