如何在添加新的yii2动态表单时不重复输入字段的值?

时间:2019-03-16 05:41:55

标签: yii2 duplicates dynamicform

当我填写第一个动态表单的所有字段时,添加一个新的字段,所有字段都用前一个表单的值填写。如何创建空的新表格? 我试图在控制器中更改此行

'modelsEduForm' => (empty($modelsEduForm)) ? [new EduForm] : $modelsEduForm,

  'modelsEduForm' => [new EduForm],

但这没有帮助。

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用Collecting tabular input

public function actionIndex()
{
    $modelsEduForms = [new EduForm()];
    for($i = 1; $i < 3; $i++) {
        $modelsEduForms[] = new EduForm();
    }

    if (Model::loadMultiple($modelsEduForms, Yii::$app->request->post()) && Model::validateMultiple($modelsEduForms)) {
        foreach ($modelsEduForms as $modelsEduForm) {
            $modelsEduForm->save(false);
        }
        return $this->redirect('index');
    }

    return $this->render('index', ['modelsEduForms' => $modelsEduForms]);
}

答案 1 :(得分:0)

我确信这不是动态表单的默认行为,如demo所示,但是有一个名为afterInsert的事件会在每次插入新行时触发。可以使用该事件从新添加的行中删除值,请参见下文

$js=<<< JS

    $(".dynamicform_wrapper").on("afterInsert", function(e, item) {
        $(item).find('input,textarea,select').each(function(index,element){
           $(element).val('');
        });
    });

JS;
$this->registerJs($js, \yii\web\View::POS_READY);