zoukankan      html  css  js  c++  java
  • 基于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数据文件:点击下载

  • 相关阅读:
    Zabbix5 Frame 嵌套
    Zabbix5 对接 SAML 协议 SSO
    CentOS7 安装 Nexus
    CentOS7 安装 SonarQube
    GitLab 后台修改用户密码
    GitLab 查看版本号
    GitLab Admin Area 500 Error
    Linux 安装 PostgreSQL
    Liger ui grid 参数
    vue.js 是一个怪东西
  • 原文地址:https://www.cnblogs.com/elycir/p/2559579.html
Copyright © 2011-2022 走看看