0

У меня проблема с функцией jQuery clone(). Я думаю, что проблема заключается в входном параметре withDataAndEvents этого метода.Клонированный вход автозаполнения не работает

Первоначально я кодирую таблицу с динамическими строками. Я добавляю динамически строки при нажатии на кнопку, помещенную только в первую строку. первая строка содержит первоначально много полей ввода и комбинированных полей. Каждое поле инициализируется вызовом ajax. И каждое действие в поле приводит к обновлению (фильтрации) по всем полям строки. Я также использую autocomplete в полях ввода.

Первый ряд работает отлично. Однако, при клонировании тег:

  1. Если я не вводить значения в первой строке, клонированного и первого ряда работы тонкой
  2. Если я ввести значение или значения первых полей строк и после того, как я клонировать , по-прежнему работают только поля первой строки. В этом случае, если я попытаюсь изменить значение combo-boxe (которое запускает событие изменения для всех соответствующих полей строк), поля первой строки будут затронуты, несмотря на использование идентификаторов при изменении данных автозаполнения. Идентификаторы полей, комбинированные поля, строки таблицы динамически создаются при нажатии кнопки для клонирования виджета.

Код, который я написал слишком долго, поэтому я создал fiddle и упростил корпус и по-прежнему испытываю ту же проблему.

Я перепробовал много предложений, которые я нашел, как this, this one или this one напрасно :-( (data.('autocomplete', null), autocomplete("destroy") ...)

У вас есть идеи по этому вопросу?

спасибо заблаговременно

+1

Примечание: Ваш тестовый пример должен иметь 'applyAutoComplete2 ('# myinput2');' (вместо этого вы выбираете класс). –

ответ

1

Помимо типографии в тесте (вы выбираете по классу вместо нового элемента по id), основная проблема заключается в том, что вы применяете автозаполнение перед добавлением его в DOM.

JSFiddle: http://jsfiddle.net/TrueBlueAussie/87jcw1y0/2/

Я просто изменил порядок этих двух линий:

$('.body').append(clone); 
applyAutoComplete2('#myinput' + inc); 

Причина ... Некоторые плагины используют данные хранения, связанные с элементом DOM, или прикрепить события к предкам и т.д. Ни одно из них не может произойти с отключенным элементом DOM, поэтому сначала присоедините его к DOM.

+0

Спасибо за подсказку. Ваше объяснение помогло мне найти решение для моей проблемы. Ваше предложение - это решение для случая, который я опубликовал. Тем не менее, в реальном случае я добавил .autocomplete («destroy») для элемента перед колонированием. Я отменил все события в первой строке перед клонированием, и теперь все строки работают нормально ... Еще раз спасибо – javaxiss

0

Я думаю, ур Задавая этот Проверьте в этой ссылке http://jsfiddle.net/bsarunmca/87jcw1y0/3/

applyAutoComplete1 ('# myinput1');

$("button").click(function() { 
    inc = inc+1; 
    $('#myinput1').clone().attr('id','myinput'+inc).appendTo('.add-this'); 
    $('#myinput'+inc).val(''); 
    applyAutoComplete2('#myinput'+inc); 

}); 
+0

Вам нужно объяснить * почему * ваше изменение устраняет проблему (то есть проблема была). –

Смежные вопросы