首页 > 解决方案 > Yii2:选中复选框后显示字段/复选框

问题描述

我的 _form 视图中有一个 ActiveForm:

<?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'isInternal')->checkbox() ?> <?php ActiveForm::end(); ?>

('isInternal' 是一个布尔值)

如果选中该复选框,我想显示另一个复选框:

$form->field($model, 'activateReminder')->checkbox();

有没有可能?也许像这样的JavaScript?

 <?= $form->field($model, 'isInternal')->checkbox(['onclick' =>
 'showInternDetails()']) ?> 

<script>
 function showInternDetails() {
 $model->isInternal = 1;
 } 
</script>

<?php 
if($model->isInternal == true)
{
$form->field($model, 'activateReminder')->checkbox();
}
?>

标签: checkboxyii2

解决方案


您可以在您声明的模型中使用whenandwhenClient选项rules,以便在模型端创建或更新两者时它可以工作,以要求并向用户显示错误,他需要选择复选框的值并显示并同时隐藏activateReminder

因此,进入您正在使用此表单的模型并添加如下规则。

public function rules(){
    return [
      [['activateReminder'],'required','when'=>function($model){return ($model->isInternal);},
      'whenClient'=>'function(attribute,value){
           if($("#'.\yii\helpers\Html::getInputId($this, 'isInternal').'").val()===1){
              $("#'.\yii\helpers\Html::getInputId($this, 'activateReminder').'").show();
              return true;
           }else{
              $("#'.\yii\helpers\Html::getInputId($this, 'activateReminder').'").hide();
           }
      }']
    ];
}

推荐阅读