• 基于jquery & json的省市区联动


    效果演示:

    html代码:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>省市区联动</title>
        <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js" type="text/javascript"></script>
        <script src="/Scripts/script.js" type="text/javascript"></script>
    </head>
    <body>
    <h2>Demo:</h2>
    <select id="province">
        <option value="0">请选择省份</option>
    </select>
    <select id="city">
        <option value="0">请选择城市</option>
    </select>
    <select id="district">
        <option value="0">请选择区县</option>
    </select>
    
    <!--下列为初始值(可选,编辑表单时设置)-->
    <input type="hidden" value="440000" id="pre_province"/>
    <input type="hidden" value="440500" id="pre_city"/>
    <input type="hidden" value="440511" id="pre_district"/>
    
    <script type="text/javascript">
        $(function () {
            citySelector.Init($("#province"), $("#city"), $("#district"), $("#pre_province"), $("#pre_city"), $("#pre_district"), true);
        });
    </script>
    </body>
    </html>

    script.js代码:

    /*
    author: elycir
    create: 2012-06
    modify: 2012-08
    description: 省市区三级(二级)联动
    */
    var citySelector = function () {
        var jsonProvince = "/content/city/json-array-of-province.js";
        var jsonCity = "/content/city/json-array-of-city.js";
        var jsonDistrict = "/content/city/json-array-of-district.js";
        var initProvince = "<option value='0'>请选择省份</option>";
        var initCity = "<option value='0'>请选择城市</option>";
        var initDistrict = "<option value='0'>请选择区县</option>";
        return {
            Init: function (province, city, district, preProvince, preCity, preDistrict, hasDistrict) {
                var that = this;
                that._LoadOptions(jsonProvince, preProvince, province, null, 0, initProvince);
                province.change(function () {
                    that._LoadOptions(jsonCity, preCity, city, province, 2, initCity);
                });
                if (hasDistrict) {
                    city.change(function () {
                        that._LoadOptions(jsonDistrict, preDistrict, district, city, 4, initDistrict);
                    });
                    province.change(function () {
                        city.change();
                    });
                }
                setTimeout(function () {
                    province.change();
                }, 100);
            },
            _LoadOptions: function (datapath, preobj, targetobj, parentobj, comparelen, initoption) {
                $.get(
                    datapath,
                    function (r) {
                        var t = ''; // t:    html容器 
                        var s;      // s:    选中标识 
                        var pre;    // pre:  初始值
                        if (preobj === undefined || preobj === null) {
                            pre = 0;
                        } else {
                            pre = preobj.val();
                        }
                        for (var i = 0; i < r.length; i++) {
                            s = '';
                            if (comparelen === 0) {
                                if (pre !== "" && pre !== 0 && r[i].code === pre) {
                                    s = ' selected=\"selected\" ';
                                    pre = '';
                                }
                                t += '<option value=' + r[i].code + s + '>' + r[i].name + '</option>';
                            }
                            else {
                                var p = parentobj.val();
                                if (p.substring(0, comparelen) === r[i].code.substring(0, comparelen)) {
                                    if (pre !== "" && pre !== 0 && r[i].code === pre) {
                                        s = ' selected=\"selected\" ';
                                        pre = '';
                                    }
                                    t += '<option value=' + r[i].code + s + '>' + r[i].name + '</option>';
                                }
                            }
    
                        }
                        if (initoption !== '') {
                            targetobj.html(initoption + t);
                        } else {
                            targetobj.html(t);
                        }
                    },
                    "json"
                    );
            }
        };
    } ();

    省市区json数据文件:点击下载

  • 相关阅读:
    apache php 整合
    ide vim 设置
    saas
    总结一些做人的标准
    关于项目和产品
    Page.ClientScript.RegisterArrayDeclaration
    span或者input的disabled(小技巧)
    JS屏蔽鼠标右键的两种方法(小技巧)
    js使用对象(小技巧)
    各种CMS
  • 原文地址:https://www.cnblogs.com/elycir/p/2559579.html
Copyright © 2020-2023  润新知