2016-11-20 38 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); 
?> 

請讓我知道你是否有更好的方法。否則,希望這可以幫助別人。