php tp5 实现三级联动

html:

<div class="zsjm_one_one_one">
                <span class="zsjm_one_one_one_span">所在地区: </span>
                <div class="zsjm_one_one_one_one">
                    <select id="pro" class="lv_sid">
                        <option>请输入您的省份</option>
                    </select>
                </div>
                <div class="zsjm_one_one_one_one">
                    <select class="lv_sid" required id="city">
                        <option>请输入您的市区</option>

                    </select>
                </div>
                <div class="zsjm_one_one_one_one">
                    <select class="lv_sid" required id="county">
                        <option>请输入您的县区</option>
                    </select>
                </div>
            </div>

js

/** 页面加载时 查省 */
        $.post(
            "{:url('provice')}",
            {act: "pro"},
            function (msg) {
                // console.log(msg);

                var option = "<option>--请选择--</option>";
                for (var i = 0; i < msg.length; i++) {

                    option += "<option value='" + msg[i]['id'] + "'>" + msg[i]['region_name'] + "</option>";
                }
                $("#pro").html(option);
            },
            'json'
        )

        /*省发生改变 查市*/
        $("#pro").change(function () {

            var pro_id = $("#pro option:selected").val();

            // $("#city").empty();
            $.post(
                "{:url('provice')}",
                {act: "city", id: pro_id},
                function (msg) {

                    var option = "<option>--请选择--</option>";
                    for (var i = 0; i < msg.length; i++) {

                        option += "<option value='" + msg[i]['id'] + "'>" + msg[i]['region_name'] + "</option>";
                    }
                    $("#city").html(option);
                });
        })


        /*市发生改变 查县*/
        $("#city").change(function () {

            var pro_id = $("#city option:selected").val();

            $.post(
                "{:url('provice')}",
                {act: "county", id: pro_id},
                function (msg) {

                    var option = "<option>--请选择--</option>";
                    for (var i = 0; i < msg.length; i++) {

                        option += "<option value='" + msg[i]['id'] + "'>" + msg[i]['region_name'] + "</option>";
                    }
                    $("#county").html(option);
                });
        })

php:

//省市县三级联动
    public function provice(){
        $act = input('post.');

        if($act['act'] == "pro"){
            $res = db('shopcity') -> where(['pid'=>0]) -> select();
        }else if($act['act'] == "city"){

            $res = db('shopcity') -> where(['pid'=>$act['id']]) -> select();
        }else if($act['act'] == "county"){

            $res = db('shopcity') -> where(['pid'=>$act['id']]) -> select();
        }

//        var_dump($res);die;
        return $res;
    }

 

  • 0
    点赞
  • 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、付费专栏及课程。

余额充值