CI框架下的城市联动

只要在ci中引入这个就可以了简单
<?php
$data['province_selected'] = $address['province_id'];
$data['city_selected'] = $address['city_id'];
$data['district_selected'] = $address['district_id'];
$this->load->view('district_select',$data);
?>
 
district_select.php
 
<?php
$CI = get_instance();
$CI->load->model('region_model', 'region');
$provinces   = $CI->region->provinces();
$citys = $CI->region->children_of($province_selected);
?>
<script  language="JavaScript">
  
 
<?php if(isset($province_selected)):?>
var province_selected = <?php echo (int)$province_selected?>;
<?php else:?>
var province_selected = 0;
<?php endif?>
 
<?php if(isset($city_selected)):?>
var city_selected = <?php echo (int)$city_selected?>;
<?php else:?>
var city_selected = 0;
<?php endif?>
 
<?php if(isset($district_selected)):?>
var district_selected = <?php echo (int)$district_selected?>;
<?php else:?>
var district_selected = 0;
<?php endif?>
 
$(document).ready(function() {
 
  var change_city = function(){
    $.ajax({
      url: '<?php echo  ITURL.'/admin.php/region_change/select_children/parent_id'// site_url('region_change/select_children/parent_id')?>'+'/'+$('#province_id').val(),
      type: 'GET',
      dataType: 'html',
      success: function(data){
        city_json = eval('('+data+')');
        var city = document.getElementById('city_id');
        city.options.length = 0;
        city.options[0] = new Option('城市', '-11');
        for(var i=0; i<city_json.length; i++){
            var len = city.length;
            city.options[len] = new Option(city_json[i].region_name, city_json[i].region_id);
            if (city.options[len].value == city_selected){
                city.options[len].selected = true;
            }
        }
        change_district();//重置地区
      }
    });
  }
 
  change_city();//初始化城市
 
  $('#province_id').change(function(){
     change_city();
  });
 
 
  var change_district = function(){
    $.ajax({
      url: '<?php echo  ITURL.'/admin.php/region_change/select_children/parent_id'//site_url('region_change/select_children/parent_id')?>'+'/'+$('#city_id').val(),
      type: 'GET',
      dataType: 'html',
      success: function(data){
        district_json = eval('('+data+')');
        var district = document.getElementById('district_id');
        district.options.length = 0;
        district.options[0] = new Option('县/区', '-22');
        for(var i=0; i<district_json.length; i++){
            var len = district.length;
            district.options[len] = new Option(district_json[i].region_name, district_json[i].region_id);
            if (district.options[len].value == district_selected){
                district.options[len].selected = true;
            }
        }
      }
    });
  }
 
  $('#city_id').change(function(){
     change_district();
  });
   
 
 
});
 
  
</script>
<select name="province_id" id="province_id"  style="width:100px;">
    <option value="-1" >省份</option>
    <?php foreach($provinces as $key => $province): ?>
    <option value="<?php echo $province['region_id']; ?>" <?php if($province['region_id']==$province_selected){echo 'selected';}?> ><?php echo $province['region_name']; ?></option>
    <?php endforeach; ?>
 
</select>
 
<select name="city_id" id="city_id"  style="width:100px;">
     
</select>
 
<select name="district_id" id="district_id" style="width:100px;">
    <option value=""></option>
</select>
 
 
region_model.php
<?php
/**
 * 省市县
 *
 *
 */
class Region_Model extends CI_Model
{
    /**
     *
     *
     * @return Region_Model
     */
    function Region_Model()
    {
        parent::__construct();
    }
     
    // --------------------------------------------------------------------
 
    /**
     *
     *
     * @param integer $parent_id
     */
    function children_of($parent_id, $select="*")
    {
        $parent_id = (int)$parent_id;
         
        $regions = array();
        $this->db->select($select);
        $this->db->where('parent_id', $parent_id);
        if ($query = $this->db->get('region')){
            return $query->result_array();
        }
        return array();      
    }
 
    // --------------------------------------------------------------------
 
    /**
     *
     *
     * @return array
     */
    function provinces()
    {
        return $this->children_of(1);
    }
 
    // --------------------------------------------------------------------
 
    /**
     * 区域名
     *
     *
     */
    function get_name($id)
    {
        if (!$id){
            return array();
        }
        $this->db->select('region_name');
        $query = $this->db->get_where('region',array('region_id' => $id));
 
        if ($row = $query->row_array()){
            return $row['region_name'];
        }
        return array();
    }
 
   // --------------------------------------------------------------------
 
    /**
     * load by id
     *
     *
     */
    function load($id)
    {
        if (!$id){
            return array();
        }
        $query = $this->db->get_where('region',array('region_id' => $id));
        if ($row = $query->row_array()){
            return $row;
        }
        return array();
    }
 
}
posted @ 2015-06-15 16:25  野生Monk3y  阅读(200)  评论(0编辑  收藏  举报