TP5 ajax地图三级联动

1.静态页面内容

<div class="row cl">
            <label class="form-label col-xs-4 col-sm-2">所在城市:</label>
            <div class="formControls col-xs-4 col-sm-7"> <span class="select-box">
                    <select name="prov" class="input-text" style="width: 150px;" id="prov">
                        <option value="0">==选择省==</option>
                        {volist name='prov' id='vo'}
                        <option {if condition="isset($data.prov) && $data.prov == $vo.id"} selected="selected" {/if} value="{$vo.id}">{$vo.name}</option>
                        {/volist}
                    </select>
                    <select name='city' class="input-text" style="width: 150px;" id="city">
                        <option value="0">==选择市==</option>
                        {volist name='city' id='vo'}
                        <option {if condition="isset($data.city) && $data.city == $vo.id"} selected="selected" {/if} value="{$vo.id}">{$vo.name}</option>
                        {/volist}
                    </select>
                    <select name='country' class="input-text" style="width: 150px;" id="country">
                        <option value="0">==选择区==</option>
                        {volist name='country' id='vo'}
                        <option {if condition="isset($data.country) && $data.country == $vo.id"} selected="selected" {/if} value="{$vo.id}">{$vo.name}</option>
                        {/volist}
                    </select>
                </span>
            </div>
        </div>

2.js内容

 $("#prov").change(function () {
        var code = $(this).val();
        $.getJSON("{:url('sonarea')}", {pid: code}, function (data) {
            var options = "<option value='0'>==选择市==</option>";
            $.each(data, function (i, area) {
                options += "<option  value='" + area.id + "'>" + area.name + "</option>"
            });
            $("#city").html(options);
        });
    });
    $("#city").change(function () {
        var code = $(this).val();
        $.getJSON("{:url('sonarea')}", {pid: code}, function (data) {
            var options = "<option value='0'>==选择区==</option>";
            $.each(data, function (i, area) {
                options += "<option  value='" + area.id + "'>" + area.name + "</option>"
            });
            $("#country").html(options);
        });
    });
3.控制器里写
  public function sonarea($pid = 0)
    {
        return json(City::child($pid));
    }

4.模型里写

 public static function child($pid = 0) {
        return self::field('id, name')->where('pid', $pid)->select();

    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三级联动通常用于省市区选择,下面是一个基于ThinkPHP 6的简单实现: 首先,我们需要在数据库中创建三个表,分别为`province`、`city`和`district`,每个表至少需要包含`id`和`name`两个字段。 接下来,我们在控制器中编写三个方法,分别用于获取省、市和区的列表: ```php public function getProvinces() { $provinces = Db::table('province')->select(); return json($provinces); } public function getCities($provinceId) { $cities = Db::table('city')->where('province_id', $provinceId)->select(); return json($cities); } public function getDistricts($cityId) { $districts = Db::table('district')->where('city_id', $cityId)->select(); return json($districts); } ``` 然后,在前端页面中,我们可以使用jQuery来实现三级联动。首先,我们需要在HTML中添加三个下拉框: ```html <select id="province"> <option value="">请选择省份</option> </select> <select id="city"> <option value="">请选择城市</option> </select> <select id="district"> <option value="">请选择区县</option> </select> ``` 接着,我们编写以下JavaScript代码: ```javascript $(function() { // 获取省份列表 $.get('/index.php/index/getProvinces', function(data) { $.each(data, function(index, province) { $('#province').append('<option value="' + province.id + '">' + province.name + '</option>'); }); }); // 省份下拉框变化时,获取对应城市列表 $('#province').change(function() { var provinceId = $(this).val(); $('#city').empty().append('<option value="">请选择城市</option>'); $('#district').empty().append('<option value="">请选择区县</option>'); if (provinceId) { $.get('/index.php/index/getCities?provinceId=' + provinceId, function(data) { $.each(data, function(index, city) { $('#city').append('<option value="' + city.id + '">' + city.name + '</option>'); }); }); } }); // 城市下拉框变化时,获取对应区县列表 $('#city').change(function() { var cityId = $(this).val(); $('#district').empty().append('<option value="">请选择区县</option>'); if (cityId) { $.get('/index.php/index/getDistricts?cityId=' + cityId, function(data) { $.each(data, function(index, district) { $('#district').append('<option value="' + district.id + '">' + district.name + '</option>'); }); }); } }); }); ``` 这样,当用户选择省份时,我们就可以异步获取对应的城市列表,并将其填充到城市下拉框中;当用户选择城市时,我们就可以异步获取对应的区县列表,并将其填充到区县下拉框中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值