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。