我有kartik select2小部件的问题 . 我正在尝试使用jquery创建动态表单 . 首先,我在div元素中使用kartik select2创建了两个字段 . 然后我克隆了div的所有内容并将其附加到div中 . 但是,当点击它时克隆的select2不工作 . 你可以帮帮我吗?
代码:javascript文件中的代码:
$(document).ready(function(){
$(document).on("click", "#add-department-btn", function(e){
e.preventDefault();
console.log("Clicked");
var option_name = Math.random()*1000000;
option_name = parseInt(option_name);
var id = $(".add-departments-container .copyPattern").data('id');
var row = $(".add-departments-container .copyPattern").clone().removeClass('copyPattern');
row.appendTo(".add-departments-container");
return false;
});
});
_form.php文件:
<div class="row">
<a href="javacript:void(0)" id="add-department-btn">+ Qo'shish</a>
</div>
<div class="add-departments-container">
<?= Yii::$app->controller->renderPartial('department/_department', [
'departments' => $departments,
'allDepartments' => $allDepartments,
'model' => $newDepartments,
'university' => $model,
'allLevels' => $allLevels,
'class' => 'copyPattern'
]); ?>
</div>
_department.php文件:
<div class="<?= $class ?>" data-id="">
<div class="row">
<div class="col-md-5">
<?= Html::label('Fakultet', 'University['. $id .'][departments]') ?>
<?= Select2::widget([
'name' => 'University['. $id .'][departments]',
'value' => '',
'data' => $allDepartments,
'options' => ['placeholder' => 'Select department ...', 'id' => 'department-'.$id],
]); ?>
</div>
<div class="col-md-5">
<?= Html::label('Levels', 'University['. $id .'][departments]') ?>
<?= Select2::widget([
'name' => 'University['. $id .'][levels]',
// 'value' => ArrayHelper::getColumn($levels->departments, 'department_id'),
'data' => $allLevels,
'options' => ['multiple' => true, 'placeholder' => 'Select states ...', 'id' => 'university-levels-'.$id],
'pluginOptions' => [
'allowClear' => true,
'tags'=>true,
'maximumInputLength'=>10,
],
]); ?>
</div>
<div class="col-md-2">
<a href="javacript:void(0)" id="delete-department-btn">Delete</a>
</div>
</div>
</div>
1 回答
您可以通过做一些技巧来解决此问题:
1)您可以传递ajax请求以返回html select2小部件的操作,还可以构建一个ajax操作,在每个单击按钮上返回表格...这将在两种情况下都有效 . 这个例子来自真实的项目(这个例子如果为完整的表格页面构建ajax页面):
2)你可以返回select2数据来查看(渲染动作),如
render(..., ['select2Data' => $yourSelect2Data])
然后创建select2 by js like注意:出现此问题是因为每个select2都有一个唯一的id,这个id已被触发并分配给创建的选定....