我的_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();
}
?>
答案 0 :(得分:1)
您可以通过JS做到这一点:
<?php
$this->registerJs(
"$('#myBox').on('change', function() { if($(this).is(":checked")){// Display your input...}else {// hide it} });",
View::POS_READY
);
答案 1 :(得分:1)
您可以在已声明的模型when
中使用whenClient
和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();
}
}']
];
}
答案 2 :(得分:0)
谢谢您的回答! 我已经解决了,如下所示:
function isInternalOnClick(){
$('#isInternalCheckbox').on('change',function(){ showOrHideActivateReminder();});
}
function showOrHideActivateReminder() {
if($('#isInternalCheckbox').is(':checked'))
{
$('#hiddenActivateReminder').show()
}
else{
$('#hiddenActivateReminder').hide();
}
}
$(document).ready(function() {
<?php
if($model->isInternal)
{
echo "
showOrHideActivateReminder();
";
}
?>
});