省市县选择

114 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

1.页面布局

      <div class="select_form">
    <select name="" id="province">
        <option value="">请选择省</option>
    </select>
    <select name="" id="city">
        <option value="">请选择市</option>
    </select>
    <select name="" id="town">
        <option value="">请选择县/区</option>
    </select>
</div>

2.先创建对象,对象里面放数据

   三联下拉框数据
    let ArryData = {
        江苏省: {
            南京市: "鼓楼区,江宁区,雨花台区",
            扬州市: "老城区,新城区,高新区",
            苏州市: "吴中区,新城区,高新区"
        },
        安徽省: {
            蚌埠市: "龙子湖区,新城区,高新区",
            合肥市: "瑶海区,蜀山区,啊哈"
        }
    }

创建数组存储option数据

    let arr_option = new Array
    let i = 0
    $(".select_form option").each(function (i) {

遍历所有option标签,通过下标将内容放在对象的数组下标里

        arr_option[i] = $(this).html()
        i++
    })

遍历ArryData获取数据

    $.each(ArryData, function (province) {

遍历数组获取一部分数据,首先是省份

当id为省的时候,添加下拉框的内容 $("#province").append("" + province + "")

    })

封装函数,获取下拉框内容

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

当省份变化的时候,执行市和县/区

QQ截图20220621233122.png change()方法,元素改变时候触发

    $("#province").change(function () {
        // 获取市和县
        arr_option_index("#city")
        arr_option_index("#town")

获取剩下的内容 就是市和县/区

        $.each(ArryData, function (province, content) {
            //选择省出现相关的数据
            // :selected   选中
            if ($("#province option:selected").text() == province) {
                $.each(content, function (city, town) {
                    $("#city").append("<option>" + city + "</option>")
                })
                $("#city").change(function () {
                    arr_option_index("#town")
                    $.each(content, function (city, town) {
                        if ($("#city option:selected").text() == city) {
                            $.each(town.split(","), function () {
                                $("#town").append("<option>" + this + "</option>")
                            })

                        }
                    })
                })

            }
        })
    })
  

QQ截图20220621233140.png

QQ截图20220621233151.png

QQ截图20220621233236.png