doupo2633 2015-04-12 17:26
浏览 45
已采纳

使用ajax调用呈现表单时,客户端验证在Yii2中不起作用

Form rendered using ajax:

<?php $form = ActiveForm::begin(['id' => 'que',
        'enableClientValidation' => true
    ]); ?>
            <?php echo $form->field($model, 'fk_subject')
                    ->dropDownList(ArrayHelper::map($subjects, 'id_subject', 'name'), [
                        'class'     => 'form-control ng-pristine ng-valid ng-touched',
                        'ng-model'  => 'que.fk_subject',
                        'prompt'    => 'Select subject',
                        'ng-change' => 'fillTopic(que);'
                    ]); ?>
            <?php echo $form->field($model, 'fk_topic')
                    ->dropDownList([], [
                        'class'     => 'form-control ng-pristine ng-valid ng-touched',
                        'ng-model'  => 'que.fk_topic',
                        'prompt'    => 'Select topic',
                        'ng-change' => 'openAddTopic(que);',
                        'ng-options' => 'topic.id_subject as topic.name for topic in topics',
                    ]); ?>
            <?php echo $form->field($model, 'type')
                    ->dropDownList($questionTypes, [
                        'class'     => 'form-control ng-pristine ng-valid ng-touched',
                        'prompt'    => 'Select question type',
                        'ng-model'  => 'que.type',
                        'ng-change' => 'addAnswerOptions(que);',
                    ]); ?>
                    <?php echo Html::submitButton('Save',
                        ['class' => 'btn btn-primary',
                            'name' => 'Save']) ?>
<?php ActiveForm::end(); ?>

I loaded the above form using ajax in yii2 and problem is client side validation is not working with it. If I load the form content on window load it works fine.

  • 写回答

2条回答 默认 最新

  • doucuo8618 2015-04-18 05:39
    关注

    OK I find the solution, I will have to use renderAjax to get the form html or will have to add beginpage and beginend function if I use renderPartial

    <?php $this->beginPage(); ?>
    <?php $this->beginBody(); ?>
    // Form and content redenered using ajax
    <?php $this->endBody(); ?>
    <?php $this->endPage(); ?>
    

    so that yii can add client validation script with the rendered content

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站