在活动表单中有一个复选框
<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
答案 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做到这一点。你可以这样做:
您必须知道如何识别表单和复选框(您可以将它们分配给它们。)
在JavaScript中,您可以执行以下操作:
var form = document.getElementById(&#34; form-id&#34;);
document.getElementById(&#34; your-checkbox-id&#34;)。addEventListener(&#34; click&#34;,function(){ form.submit(); });
在这个答案中解释: submit form with javaScript