我见过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
下拉列表。
答案 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请求中保持活动状态。