Yii下拉列表取决于两个下拉列表

时间:2014-01-21 21:56:10

标签: php yii

我见过this wiki,根据包含国家/地区的其他下拉列表的值,使用带有更新选项的ajax调用,填充城市下拉列表。我需要实现类似的东西,但我的下拉列表取决于两个下拉列表:

<div class="row">
    <?php echo CHtml::label('Countries', 'country_id'); ?>
    <?php echo CHtml::dropdownlist('country_id', '',$countries); ?>
</div>

<div class="row">
    <?php echo $form->labelEx($model,'globaladmin'); ?>
    <?php echo $form->dropDownList($model,'globaladmin',User::itemAlias('AdminStatus')); ?>
    <?php echo $form->error($model,'globaladmin'); ?>
</div>

用户必须选择一个国家/地区,然后只有在第二个列表中选择“否”时,才能使用城市信息填充新的下拉列表(就像在wiki示例中一样)。

正如我所说,它与示例相似,但新下拉列表取决于2个值(第一个列表中选择的contry的id以及第二个列表中是否选择了“No”)。我怎么能解决它?

编辑:解释一下

在示例中,包含ajax调用的国家/地区下拉列表如下:

echo CHtml::dropDownList('country_id','', array(1=>'USA',2=>'France',3=>'Japan'),
array(
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('currentController/dynamiccities'), //url to call.
'update'=>'#city_id', //selector to update
))); 

我无法在country列表中定义这样的ajax调用,因为我必须等待第二个dropbox的值。只有在此列表中选择“否”时,才会执行ajax(并填充并显示city下拉列表)。如果选择“是”,则必须隐藏city下拉列表。

1 个答案:

答案 0 :(得分:2)

只需在你的globaladmin下拉列表中添加一个ID,然后执行以下操作:

$("#THE ID YOU HAVE SET").on('change',function(){
    // You can use $(this).val()
    // and send it via an ajax request into your own url
    var valueOfMyGlobalAdminDropDown=$(this).val();
    if(valueOfMyGlobalAdminDropDown=="yes"){
       //DO SOMETHING
    }else{
       //DO SOMETHING ELSE
    }
});

强烈建议使用jquery live(在jquery版本-1.7中)或jquery ON(在jquery版本+1.7中)以使页面在ajax请求中保持活动状态。