根据单选按钮选择设置下拉列表的选项

时间:2014-06-16 11:22:23

标签: yii yii2

我有一个包含下拉字段的表单。下拉列表的选项基于单选按钮选择。

单选按钮

<?php
    $list=array("1"=>"Assign to Department","2"=>"Assign to user");
    echo $form->field($model, 'option')->radioList($list,
    [ 
        'template' => '{input}{label}', // put the label behind
    ]);
?>

脚本

<script>
    $('input[type=radio]').click(function(){

        var Flag=this.value;
        if(Flag=='1') {
            '<?php $items= ArrayHelper::map($company->Users, 'id', 'fullname');?>';
        } else if(Flag=='2') {
            '<?php $items= ArrayHelper::map(Department::find()->all(), 'dep_id', 'name'); ?>';
        }
        alert(Flag);
    });
</script>

Drodown

<?php
    echo $form->field($model, 'assignee')
        ->dropDownList(
            $items,           // Flat array ('id'=>'label')
            ['prompt'=>'']    // options
        )->label('');
?>

预期响应是根据下拉选择更改选项值。但即使单选按钮和单击更改的标记值不同,它也不会更改。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我试过这个样本并且有效 -

<?php
    $items1 = range(0, 5);    //PHP Array 1
    $items2 = range(5, 10);   //PHP Array 2
?>

<script>
    var arr1 = <?php echo json_encode($items1); ?>;  //Javascript Array 1
    var arr2 = <?php echo json_encode($items2); ?>;  //Javascript Array 2

    $(document).ready(function() {
        $('input[type=radio]').click(function(){
            var Flag = this.value;
            setDropdown(Flag);
        });
    });

    function setDropdown(Flag) {
        var elem = $('#Skill_order_no'); //Your dropdown element name.
        if(Flag == '1') {
            elem.empty();
            $.each(arr1, function(index, value) {
                 elem.append($('<option>').text(value).attr('value', value));
            }); 
        } else if(Flag == '2') {
            elem.empty();
            $.each(arr2, function(index, value) {
                 elem.append($('<option>').text(value).attr('value', value));
            }); 
        }
    }
</script>