Yii2 - 复选框更改提交ActiveForm

时间:2017-11-20 20:44:39

标签: yii2 pjax active-form

index.php中的

在活动表单中有一个复选框

<div class="form-group pull-right" style="margin-right: 10px">
    <?php Pjax::begin(['id' => 'options']); ?>
    <?php $form = ActiveForm::begin(['method' => 'get', 'action' => ['ensemble/index'], 'options' => ['data-pjax' => true]]); ?>

    <?= $form->field($searchModel, 'completed')->checkbox(); ?>
    <?= Html::submitButton('Apply', ['class' => 'btn btn-success']) ?>

    <?php ActiveForm::end(); ?>
    <?php Pjax::end(); ?>
</div>

index.php

中也有kartik gridview
<?= GridView::widget($gridConfig); ?>

使用以下配置

$gridConfig['pjax'] = true;
$gridConfig['pjaxSettings'] = ['options' => ['id' => 'pjaxGrid']];

具有ensemble操作的index控制器如下所示

public function actionIndex()
{
    $searchModel = new EnsembleSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

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

这对每件事都很好。我可以选中/取消选中复选框字段并点击提交按钮;然后重新加载gridview。真酷。

现在我想知道是否有可能,只需单击复选框即可实现此目的?因此,如果我选中/取消选中该复选框,将重新加载gridview(pjax&#39; d)。

欢呼声, LUC

2 个答案:

答案 0 :(得分:2)

将ID分配给您的表单,并将类分配给您的复选框。

<div class="form-group pull-right" style="margin-right: 10px">
    <?php Pjax::begin(['id' => 'options']); ?>
    <?php $form = ActiveForm::begin([
            'id' => 'filter-form', 
            'method' => 'get', 
            'action' => ['ensemble/index'], 
            'options' => ['data-pjax' => true]
        ]); ?>
    <?= $form->field($searchModel, 'completed',['class'=>'status_chk'])->checkbox(); ?>
    <?= Html::submitButton('Apply', ['class' => 'btn btn-success']) ?>
    <?php ActiveForm::end(); ?>
    <?php Pjax::end(); ?>
</div>

将此脚本添加到index.php文件中。

<?php
$this->registerJs(
   '$("document").ready(function(){ 
        $(document).on("change",".status_chk", function() {
            $("#filter-form").submit();
        });
    });'
);
?>

答案 1 :(得分:0)

我想说你可以用JavaScript做到这一点。你可以这样做:

  1. 您必须知道如何识别表单和复选框(您可以将它们分配给它们。)

  2. 在JavaScript中,您可以执行以下操作:

    var form = document.getElementById(&#34; form-id&#34;);

    document.getElementById(&#34; your-checkbox-id&#34;)。addEventListener(&#34; click&#34;,function(){   form.submit(); });

  3. 在这个答案中解释: submit form with javaScript