Копирование виджетов yii2
Задача выполнятся в фреймворке yii2.
Задача следующая. Есть два виджета. Эти виджеты должны копироваться по кнопке "добавить". Само "копирование" виджетов происходит. Однако(!) на "вновь появившихся" инпутах js не работает.
Вопрос как заставить работать js на всех инпутах которые добавляются по кнопке "добавить"?
JS код:
$(document).ready(function () {
$(document).on('click', '.add-product', function (){
$(".product").clone().appendTo(".form-product-items");
})
});
PHP код:
<section class="main-content form-product-items">
<div class="container form-product-item">
<div class="row">
<div class="col-lg-6">
<?php
echo $form->field($model, 'category')->widget(Select2::classname(), [
'data' => [],
'options' => ['placeholder' => 'Категория'],
'pluginOptions' => [
'allowClear' => true,
'tags' => true
],
]);
?>
</div>
<div class="col-lg-6">
<?php
echo $form->field($model, 'product')->widget(Select2::classname(), [
'data' => [],
'options' => ['placeholder' => 'Продукт', 'multiple' => true],
'pluginOptions' => [
'tags' => true
]
]);
?>
</div>
<div class="col-lg-2"></div>
<div class="col-lg-2"></div>
<div class="col-lg-2"></div>
<div class="col-lg-2"></div>
<div class="col-lg-2"></div>
<div class="col-lg-2">
<?= Html::button('Добавить', ['class' => 'btn btn-primary btn-block add-product w-100']) ?>
</div>
</div>
</div>
</section>
Ответы (1 шт):
Нужно попробовать клонировать так:
$(".product").clone(true, true).appendTo(".form-product-items");
В таком случае будут копироваться и слушатели, которые стоят на элементе.
Если это не поможет, то придётся лезть в код виджета, смотреть, какие слушатели куда навешиваются и вручную добавлять слушателей на склонированные элементы
Ещё вариант - сходить в документацию к виджету и посмотреть, есть ли там строки про какую-нибудь "реинициализацию". Наверняка там есть доп. данные, как "запускать" новый виджет с новыми данными