yii 下拉列表多级联动 dropDownList
本文章中用到的TblArea模型的sql文件地址:http://download.csdn.net/detail/aa1049372051/7024519
视图代码
<?php
//获取地区一级划分(省级)
$state_data = TblArea::model()->findAll("grade=:grade", array(":grade" => 1));
//把一级划分数据转化为数组array(id,name)
$state = CHtml::listData($state_data, "id", "name");
//默认被选中项(主要用在yii create update更新数据中,如果是创造数据,默认选中为空,如果是更新数据,默认选中就是数据库中信息(model就是存放数据地址的表的模型))
//$s_default = $model->isNewRecord ? "" : $model->state;
$s_default="";
echo CHtml::dropDownList("province", $s_default , $state,array("empty"=>"--请选择省份--",
"id" => "province",
"ajax"=>array(
"type"=>"POST",
"url"=>Yii::app()->createUrl("site/getcitylists"),
"update"=>"#city",
"data"=>array("province_id"=>"js:$("#province").val()"),
)
)
);
echo " ";
echo Chtml::dropDownList("city", "",array("--请选择城市--"), array(
"class" => "width90 select",
"id" => "city",
"empty" => "请选择城市",
"ajax" => array(
"type" => "POST", //request type
"url" => Yii::app()->createUrl("site/getdistrictlists"),
"update" => "#area", //lector to update
"data" => "js:"city_id="+jQuery(this).val()",
)));
echo " ";
echo CHtml::dropDownList("area", "", array("--请选择地区--"));
echo "<br><br>";
echo CHtml::button("提交", array("id"=>"button1"));
echo "<br><br>";
echo "<div style="display:none;" id="div1">";
echo CHtml::label("", "", array("id"=>"label1",));
echo "</div>";
?>
<script type="text/javascript">
$(function(){
// $("input[name=CompanyType]:eq(0)").attr("checked","checked");
$("#province").change(function(){
if($(this).val()){
var province=$(this).val();
var url= "<?php echo Yii::app()->createUrl("/site/getarealists")?>";
$.getJSON(url,{province:province},function(data){
if(data!=""){
$("#area").empty();
$.each(data, function(key,val){
jQuery("<option value=""+key+"">"+val+"</option>").appendTo("#area");
});
}
});
}else{
$("#area").empty();
$("<option value="">请选择地区</option>").appendTo("#area");
}
});
$("#button1").click(function()
{
var state=$("#province").val();
var city=$("#city").val();
var area=$("#area").val();
var url="getdata";
$.ajax({
type: "post",
//dataType: "json",
url: url,
data:{"YII_CSRF_TOKEN":"<?php echo Yii::app()->request->csrfToken?>","state":state,"city":city,"area":area},
cache: false,
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
},
success:function(data){
if(data)
{
$("#label1").text(data);
$("#div1").toggle();
}
}
});
});
});
</script>控制器中
//省级变动获取省级下属城市列表
public function actionGetcitylists()
{
if(isset($_POST["province_id"])&&$_POST["province_id"])
{
$province_id = $_POST["province_id"];
$data = TblArea::model()->findAll("parent_id=:parent_id", array(":parent_id" => $province_id));
$data = CHtml::listData($data, "id", "name");
foreach ($data as $value => $name) {
echo CHtml::tag("option", array("value" => $value), CHtml::encode($name), true);
}
}
else
{
echo CHtml::tag("option", array("value" => ""), "请选择城市", true);
}
}
//城市变动获取城市下属城区列表
public function actionGetdistrictlists()
{
if(isset($_POST["city_id"])&&$_POST["city_id"])
{
$city_id = $_POST["city_id"];
$data = TblArea::model()->findAll("parent_id=:parent_id", array(":parent_id" => $city_id));
$data = CHtml::listData($data, "id", "name");
foreach ($data as $value => $name) {
echo CHtml::tag("option", array("value" => $value), CHtml::encode($name), true);
}
}
else
{
echo CHtml::tag("option", array("value" => ""), "请选择地区", true);
}
}
//省级变动获取第一个下属城市的城区列表
public function actionGetarealists()
{
if(isset($_GET["province"])&&$_GET["province"])
{
$province_id = $_GET["province"];
$data = TblArea::model()->findAll("parent_id=:parent_id", array(":parent_id" => $province_id));
foreach ($data as $city) {
$arealists=TblArea::model()->findAll("parent_id=:parent_id", array(":parent_id" => $city->id));
$areadata = CHtml::listData($arealists, "id", "name");
break;
}
echo json_encode($areadata);
}
}
public function actionGetdata()
{
if($_POST)
{
$state=$_POST["state"];
$city=$_POST["city"];
$area=$_POST["area"];
$statedata = TblArea::model()->find("id=:state", array(":state" => $state));
$citydata = TblArea::model()->find("id=:city", array(":city" => $city));
$areadata = TblArea::model()->find("id=:area", array(":area" => $area));
echo $statedata["name"]." ".$citydata ["name"]." ".$areadata["name"];
}
}声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
