Yii2动态表格wbraganca复制值到克隆字段

我在我的Yii2项目中使用wbraganca动态表单,我想将第一组字段中输入的值复制到克隆div中的字段集。

据我所知,jQuery默认将值复制到克隆字段。 在浏览扩展的dynamicform.js时,我发现代码我认为会覆盖默认function,不允许将值复制到克隆字段。

负责相同的相关代码是这样的:

$template.find('input, textarea, select').each(function() { if ($(this).is(':checkbox') || $(this).is(':radio')) { ... $(this).prop('checked', false); } else if($(this).is('select')) { $(this).find('option:selected').removeAttr("selected"); } else { $(this).val(''); } }); .... 

现在我的问题是如何将第一组字段的值复制到克隆字段。 例如我的领域是:

 field($modelCustomBreakTime, "[{$i}]days")->dropDownList(['select',$days]) ?> //where $days are days of week 

所以基本上我想要的是当我选择星期一时,复制的值应该是星期一。

更新:_form.php内容

 where(['user_role' => 'instructor'])->andwhere(['status' => 10])->all(), 'id', function ($model) { return $model['first_name'] . ' ' . $model['last_name']; }) /* @var $this yii\web\View */ /* @var $model app\modules\admin\models\CustomBreakTime */ /* @var $form yii\widgets\ActiveForm */ ?>  
'dynamic-form']); $days = ['Monday' => Yii::t('app', 'Monday'), 'Tuesday' => Yii::t('app', 'Tuesday'), 'Wednesday' => Yii::t('app', 'Wednesday'), 'Thursday' => Yii::t('app', 'Thursday'), 'Friday' => Yii::t('app', 'Friday'), 'Saturday' => Yii::t('app', 'Saturday'), 'Sunday' => Yii::t('app', 'Sunday'), ]; ?>

Break Times

'dynamicform_wrapper', // required: only alphanumeric characters plus "_" [A-Za-z0-9_] 'widgetBody' => '.container-items', // required: css class selector 'widgetItem' => '.item', // required: css class 'limit' => 10, // the maximum times, an element can be cloned (default 999) 'min' => 1, // 0 or 1 (default 1) 'insertButton' => '.add-item', // css class 'deleteButton' => '.remove-item', // css class 'model' => $modelsCustomBreakTime[0], 'formId' => 'dynamic-form', 'formFields' => [ 'days', 'start_time', 'end_time', ], ]); ?>
$modelCustomBreakTime): ?>

CustomBreakTime

field($modelInstructor, 'id')->dropDownList($instructor_array, ['options' => [$_GET['id'] => ['Selected'=>'selected'],'prompt' => 'Select Instructor']])?>
isNewRecord) { echo Html::activeHiddenInput($modelCustomBreakTime, "[{$i}]id"); } ?>
field($modelCustomBreakTime, "[{$i}]days")->dropDownList(['select',$days]) ?>
field($modelCustomBreakTime, "[{$i}]start_time",['enableLabel' => false])->widget(TimePicker::classname(), ['pluginOptions' => [ 'minuteStep' => 15, 'showMeridian' => false, 'defaultTime' => date('H:i', strtotime('11.00')), ], ]) ?>
field($modelCustomBreakTime, "[{$i}]end_time",['enableLabel' => false])->widget(TimePicker::classname(), ['pluginOptions' => [ 'minuteStep' => 15, 'showMeridian' => false, 'defaultTime' => date('H:i', strtotime('11.00')), ], ]) ?>
isNewRecord ? 'Create' : 'Update', ['class' => 'btn btn-primary']) ?>

如果您正在查看js文件,那么您可能忽略了dynamicform.js第26行的events部分

 var events = { beforeInsert : 'beforeInsert', afterInsert : 'afterInsert', beforeDelete : 'beforeDelete', afterDelete : 'afterDelete', limitReached : 'limitReached' }; 

但是,只有在使用嵌套表单时才能使用这些事件。 您可以像下面一样绑定afterInsert事件

 $('.dynamicform_wrapper').on('afterInsert', function (e, item) { //code to copy values from the desired row/field set }); 

dynamicform_wrapperwidgetContainer小部件属性的值。

对于嵌套表单,尚未正式提供任何支持,尽管您可以编写自己的脚本,例如使用Mutation Observers在插入或删除元素时触发js函数。

这是一篇带有实例的好文章。