如何在YII上替换复选框的ID?

时间:2013-07-06 07:47:01

标签: yii

我的观点代码

    <?php 
$temp = CHtml::listData($roles,'name','name');
                echo $form->checkBoxList($model, 'role', $temp,
                           array('labelOptions'=>array('style'=>'display:inline; padding-right: 1em; vertical-align:middle;'), // add this code
                     ));
            ?> 

数组$ temp输出

array(7) { ["Administrator"]=> string(13) "Administrator" ["Creator"]=> string(7) "Creator" ["Director"]=> string(8) "Director" ["Implementer"]=> string(11) "Implementer" ["Reviewer"]=> string(8) "Reviewer" ["Superadmin"]=> string(10) "Superadmin" ["Temporary Director"]=> string(18) "Temporary Director" }
HTML输出中的

<span id="User_role"><input id="User_role_0" value="Administrator" type="checkbox" name="User[role][]"> <label style="display:inline; padding-right: 1em; vertical-align:middle;" for="User_role_0">Administrator</label><br>
<input id="User_role_1" value="Creator" type="checkbox" name="User[role][]"> <label style="display:inline; padding-right: 1em; vertical-align:middle;" for="User_role_1">Creator</label><br>
<input id="User_role_2" value="Director" type="checkbox" name="User[role][]"> <label style="display:inline; padding-right: 1em; vertical-align:middle;" for="User_role_2">Director</label><br>
<input id="User_role_3" value="Implementer" type="checkbox" name="User[role][]"> <label style="display:inline; padding-right: 1em; vertical-align:middle;" for="User_role_3">Implementer</label><br>
<input id="User_role_4" value="Reviewer" type="checkbox" name="User[role][]"> <label style="display:inline; padding-right: 1em; vertical-align:middle;" for="User_role_4">Reviewer</label><br>
<input id="User_role_5" value="Superadmin" type="checkbox" name="User[role][]"> <label style="display:inline; padding-right: 1em; vertical-align:middle;" for="User_role_5">Superadmin</label><br>
<input id="User_role_6" value="Temporary Director" type="checkbox" name="User[role][]"> <label style="display:inline; padding-right: 1em; vertical-align:middle;" for="User_role_6">Temporary Director</label></span>

我想要的是

<input id="User_role_Administrator" value="Administrator" type="checkbox" name="User[role][]">

我该怎么做

2 个答案:

答案 0 :(得分:0)

您无法修改id中复选框的checkBoxList属性。无论如何,它都是无效的HTML,因为您会将相同的id分配给DOM上的多个元素。

我假设您需要id来解决来自javascript的输入。您可以改为指定class

<?php echo $form->checkBoxList($model, 'role', $temp, array(
    'labelOptions'=>array(
        'style'=>'display:inline; padding-right: 1em; vertical-align:middle;'
    ),
    'class' => 'user-role',
));  ?> 

然后在jQuery中,您可以使用$('.user-role')获得所有输入。

答案 1 :(得分:0)

这是复选框列表。

<?php 
                echo $form->checkBoxList($model, 'role', $arr_roles,
                    array('labelOptions'=>array('style'=>'display:inline; padding-right: 1em; vertical-align:middle;'),
                            'class'=>'user-role',));
            ?> 

这是javascript

<?php
Yii::app()->clientScript->registerScript('temp-director', "     
     $('input.user-role').click(function(){ 
        if( $(this).val() == 'Temporary Director'){     
            $('#extra').toggle($(this).is(':checked'));
        }
    });
");
?>