2016-11-20 20 views
0

是否有方法来捕获在ActiveCheckboxList中检查哪个项目,以便能够根据该值修改窗体?Yii2 ActiveCheckboxList项目检查事件

<?= $form->field($model, 'options')->checkBoxList($options) ?> 

这产生(如预期)的HTML

<div id="classname-options"> 

标签包围用名称,值和数据索引的一系列复选框输入类型。当选中某个特定选项时,我想要切换隐藏/取消隐藏表单上的另一个字段。

使用单个复选框,我总是为其输入标签分配一个id并使用js处理程序。但我不知道如何做一个复选框列表,所以我想我必须检查DOM中的值...?

在此先感谢您的帮助。

回答

0

好的,这是我做的工作。从本质上讲,包含div的JQuery更改事件处理程序将检查列表中每个复选框的值 - 在我的示例中,我正在查找“CC”。 (我不提前知道哪个项目具有的价值,所以我不能用数据索引查询。)

这里是JS在我看来:文件

<?php 
$script = <<< JS 
$(function() { 
     $('#otherfieldlbl').hide(); 
     $('#otherfield').hide(); 
}) 
$('#member-options').change(function() { 
    var ccexists = false; 
    $('#member-options input:checked').each(function() { 
     if ($(this).attr('value') == 'CC') { 
      ccexists = true; 
     } 
    }); 
    if (ccexists == true) { 
     $('#otherfieldlbl').show(); 
     $('#otherfield').show(); 
    } else { 
     $('#otherfieldlbl').hide(); 
     $('#otherfield').hide(); 
    }; 
}); 
JS; 
$this->registerJs($script); 
?> 

请让我知道你是否有更好的方法。否则,希望这可以帮助别人。