我有三个下拉列表,它们之间有依赖关系。以下是代码:
echo CHtml::dropDownList('island_id',$island,$locationsList,
array('ajax'=>array('type'=>'POST',
'url'=>CController::createUrl('supplierHead/getRegions'),
'update'=>'#region_id',),
'id'=>'island_id',
'empty'=>'Choose Island',
));
echo " ";
echo CHtml::dropDownList('region_id',$region, $regionsList,
array('ajax'=>array('type'=>'POST',
'url'=>CController::createUrl('supplierHead/getProvinces'),
'update'=>'#province_id',),
'id'=>'region_id',
'empty'=>'Choose Region',
));
echo " ";
echo CHtml::dropDownList('province_id',$province,$provincesList, array('empty'=>'Choose Province'));
岛屿 ID 是父级,当选择一个值时,它会更新第二个下拉菜单并填充与父级相关的数据,然后一旦选择了第二个下拉菜单的值,便会填充可用于第三个下拉菜单的值。
问题:
当所有下拉菜单都设置了值,并且我决定更改第一个下拉菜单(父级)的值时,它会更新第二个下拉菜单的值,但不会更新第三个下拉菜单。只有手动更改第二个下拉菜单中的值时,才会更新第三个下拉菜单。此外,当更改第二个下拉菜单的值时,第三个下拉菜单会更新,这是正确的,但父级不会更改。如何解决这个问题?
以下是我的控制器:
public function actionGetRegions()
{
$data=Locations::model()->findAll('location_parent=:location_parent AND location_id != :location_parent', array(':location_parent'=>(int) $_POST['island_id']));
$data=CHtml::listData($data, 'location_id', 'location_name');
foreach ($data as $value => $name) {
echo CHtml::tag('option', array('value'=>$value), CHtml::encode($name), true);
}
}
public function actionGetProvinces()
{
$data=Locations::model()->findAll('location_parent=:location_parent AND location_id != :location_parent', array(':location_parent'=>(int) $_POST['region_id']));
$data=CHtml::listData($data, 'location_id', 'location_name');
foreach ($data as $value => $name) {
echo CHtml::tag('option', array('value'=>$value), CHtml::encode($name), true);
}
}