原生js實現(xiàn)三級聯(lián)動

    <!-- 省 -->
    <select name="province" id="province"> </select>
    <!-- 市 -->
    <select name="city" id="city"> </select>
    <!-- 縣 -->
    <select name="county" id="county"> </select>
// 數(shù)據(jù)通常由后臺返回,結(jié)構(gòu)如下:

var citys = [

        { "name": "北京", "city": [{ "name": "北京", "area": ["東城區(qū)", "西城區(qū)", "崇文區(qū)", "宣武區(qū)", "朝陽區(qū)", "豐臺區(qū)", "石景山區(qū)", "海淀區(qū)", "門頭溝區(qū)", "房山區(qū)", "通州區(qū)", "順義區(qū)", "昌平區(qū)", "大興區(qū)", "平谷區(qū)", "懷柔區(qū)", "密云縣", "延慶縣"] }] },
        { "name": "天津", "city": [{ "name": "天津", "area": ["和平區(qū)", "河?xùn)|區(qū)", "河西區(qū)", "南開區(qū)", "河北區(qū)", "紅橋區(qū)", "塘沽區(qū)", "漢沽區(qū)", "大港區(qū)", "東麗區(qū)", "西青區(qū)", "津南區(qū)", "北辰區(qū)", "武清區(qū)", "寶坻區(qū)", "寧河縣", "靜??h", "薊 縣"] }] }
    ]

    // 具體實現(xiàn)

    // 獲取省
    var province = document.getElementById('province');

    province.options[0] = new Option('請選擇省', -1)

    // 獲取市
    var city = document.getElementById('city');
    city.options[0] = new Option('請選擇市', -1)
    // 獲取縣
    var county = document.getElementById('county');
    county.options[0] = new Option('請選擇縣', -1)

    citys.forEach(function (item, index) {

        // 添加省
        province.options[province.options.length] = new Option(item.name, index);

        // 給省綁定事件
        province.onchange = function () {

            // 獲取選擇的省
            var provinceValue = province.value;

            // 首先清空市和區(qū)縣
            city.options.length = 0;
            city.options[city.options.length] = new Option('請選擇市', -1);
            county.options.length = 0;
            county.options[county.options.length] = new Option('請選擇縣', -1)

            // 判斷是否是‘請選擇’
            if (province.value !== '-1') {

                // 然后給對應(yīng)的省添加市
                citys[provinceValue].city.forEach(function (item, index) {
                    city.options[city.options.length] = new Option(item.name, index);

                    // 給市綁定事件
                    city.onchange = function () {

                        // 獲取選擇的市
                        var cityValue = city.value;

                        // 清空縣
                        county.options.length = 0;
                        county.options[county.options.length] = new Option('請選擇縣', -1);

                        // 判斷選擇的市是否是‘請選擇’
                        if (cityValue !== '-1') {

                            // 設(shè)置市對應(yīng)的縣
                            citys[provinceValue].city[cityValue].area.forEach(function (item, index) {
                                county.options[county.options.length] = new Option(item, index);
                            })
                        }
                    }
                })
            }
        }
    })
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容