地点下来框的实现(php)

效果图:

样式(bootstrap):

class="selectpicker show-tick form-control",就是多了个form-contro就行了

概念:

        这里做了两个change的动作:

           第一,当省的取值改变的时候,市和区的数据也会改变

           第二,当市的取值改变的时候,区的数据也会改变

 

第一个动作在加载的时候就需要完成,也需要设置为省的改变动作。

第二个只需要设置市的改变动作即可。

 

 根据上一级取到的数据来改变下一级的数据

 

数据的互动用ajax来实行,用ajax取到的数据只能在success里面有效。

代码如下:

ajax:    

 1 public function area(){
 2         header("Content-Type: text/html; charset=UTF-8");
 3           if(I('get.id')){
 4                $area = M('area');
 5                $where = array();
 6                $where['area_name'] = I('get.id');
 7                $id = $area -> where($where) -> field('area_id') -> find();
 8                $where = null;
 9                  $where['parent_id'] = $id['area_id'];
10                  $data = $area -> where($where) -> field('area_id,area_name,area_describe,parent_id') -> select();
11                  $this->ajaxReturn($data,'json');
12           }

动作事件:

 1 //  area_province 省   , area_city 市 , area_district 区
 2       $(document).ready(function(){
 3           area_one('#area_province','#area_city','#area_district');
 4       })
 5 
 6       $('#area_province').change(function(){
 7 //          area('#area_province','#area_city');
 8           area_one('#area_province','#area_city','#area_district');
 9       });
10   
11       $('#area_city').change(function(){
12           area_two('#area_city','#area_district');
13           });

方法:

 1       function  area_one(getSelect,serSelect,setSelect){
 2           var a =  $(getSelect).val();
 3           var html = '';
 4           if(a !== null && a !== '' && a !== undefined ){
 5               $.ajax({
 6                   type:"get",
 7                   url : "{:U('FullTime/area')}",
 8                   data:{ id : a },
 9                   dataType: "json",
10                   success: function(data){
11                       for (var i = 0; i < data.length; i++) {
12                           if(i == 0){
13                               html += "<option value=" + "'" + data[i].area_name + "'" + " " +"selected='selected'" +">"
14                                       + data[i].area_name +" </option>";
15                           }
16                           html += "<option value=" + "'" + data[i].area_name + "'" +">"
17                                   + data[i].area_name +" </option>";
18                       }
19                       $(serSelect).html(html);
20                       area_two(serSelect,setSelect)
21                   },
22                   error:function(jqXHR){
23                       alert("发生错误:" + jqXHR.status);
24                   },
25               });
26           }else{
27 
28           }
29       }
 1       function area_two(getSelect,serSelect){
 2           var a =  $(getSelect).val();
 3           var html = '';
 4           if(a !== null && a !== '' && a !== undefined ){
 5               $.ajax({
 6                   type:"get",
 7                   url : "{:U('FullTime/area')}",
 8                   data:{ id : a },
 9                   dataType: "json",
10                   success: function(data){
11                       for (var i = 0; i < data.length; i++) {
12                           html += "<option value=" + "'" + data[i].area_name + "'" +">"
13                                   + data[i].area_name +" </option>";
14                       }
15                       $(serSelect).html(html);
16                   },
17                   error:function(jqXHR){
18                       alert("发生错误:" + jqXHR.status);
19                   },
20               });
21           }else{
22               alert("上一级不能为空");
23           }
24       }

 

 
posted @ 2017-09-23 17:35  1O(∩_∩)O1  阅读(179)  评论(0编辑  收藏  举报