[网页示例]三联下拉框

<!DOCTYPE html>
{% load static %}
<html>

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>三级联动</title>
</head>

<body>
<div id="select_form">
    <select name="" id="province">
        <option>请选择省</option>
    </select>
    <select name="" id="city">
        <option>请选择市</option>
    </select>
    <select name="" id="county">
        <option>请选择县/区</option>
    </select>
</div>
<script type="text/javascript" src="{% static '/javascript/jquery-3.6.0.js' %}"></script>
<script>
    // 三联下拉框数据
    let ArrayData = {
        江苏省: {
            南京市: "鼓楼区,江宁区,雨花区",
            扬州市: "广陵区,江都区,仪征",
            苏州市: "吴中区,新城区,高新区"
        },
        安徽省: {
            蚌埠市: "龙子湖区,新城区,高新区",
            合肥市: "蜀山区,新城区,高新区"
        }
    }
    // 创建数组存储option中的数据
    let arr_option = new Array;
    let i = 0;
    // .each() 遍历
    $('#select_form option').each(function (i) {
        // 遍历所有的option标签,通过下标将内容放在对应的数组下标里
        arr_option[i] = $(this).html();
        i++;
    })

    // 遍历ArrayData 获取数据
    $.each(ArrayData, function (province) {
        // 遍历数组,获取一部分的数据,首先是省份
        // 当id为省的时候,添加下拉框的内容
        $("#province").append("<option>" + province + "</option>")
    })

    // 封装获取下拉框内容方法
    function arr_option_index(obj) {
        // 通过index获取对象索引
        let index = $(obj).index();
        // 通过下标匹配数组中下标,获取相应的内容
        $(obj).html("<option>" + arr_option[index] + "</option>")
    }

    // 当省份发生变化的时候,执行市和县/区
    // change 元素改变时触发
    $('#province').change(function () {
        // 获取市和县/区
        arr_option_index("#city")
        arr_option_index("#county")
        // 获取剩下的内容  市和县/区
        $.each(ArrayData, function (province, content) {
            // 选择省名和相关联的数据
            // selected 选中
            if ($('#province option:selected').text() == province) {
                $.each(content, function (city, county) {
                    $('#city').append("<option>" + city + "</option>")
                })
                $('#city').change(function () {
                    arr_option_index("#county")
                    $.each(content, function (city, county) {
                        if ($('#city option:selected').text() == city) {
                            $.each(county.split(","), function () {
                                $('#county').append("<option>" + this +
                                    "</option>")
                            })
                        }
                    })
                })
            }
        })
    })
</script>
</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值