全国城市地区Jquery插件

全国城市地区Jquery插件

//************************************************
//版本:v1.0
//by:liuyh83 一旧饭
//************************************************
(function ($) {
    function Location() {
        this.xmldoc = null;
        this.provinceDDl = null;
        this.cityDDl = null;
        this.districtDDl = null;
        this._defaults = {
            xmlpatch: "Location.xml",//城市地区XML路径
            xdis: true,//是否一直显视城市和地区的选择框
            firstop: true //是否显视选择框的默认选择
        };
    }


    $.extend(Location.prototype, {
        _attachLocation: function (target, options) {
            var settings = $.extend(this._defaults, options);
            var xmldoc = this._getXmldocument(settings.xmlpatch);
            var lo = this;
            this.xmldoc = xmldoc;
            this.provinceDDl = $("<select/>");
            this.cityDDl = $("<select/>");
            this.districtDDl = $("<select/>");
            this.provinceDDl.change(function () {
                lo._cityPross(xmldoc);
            });
            this.cityDDl.change(function () {
                lo._districtPross(xmldoc);
            });
            this._provincePross(xmldoc);


            this.provinceDDl.appendTo("#" + $(target).attr("id"));
            this.cityDDl.appendTo("#" + $(target).attr("id"));
            this.districtDDl.appendTo("#" + $(target).attr("id"));


        },
        _provincePross: function (xmldoc) {
            provinces = xmldoc.getElementsByTagName("Province");
            this.provinceDDl.empty();
            if (this._defaults.firstop == true) {
                this.provinceDDl.append($("<option/>", { val: '0', text: "选择省份" }));
            }


            for (var i = 0; i < provinces.length; i++) {
                this.provinceDDl.append($("<option/>", { val: provinces[i].getAttribute("ProvinceId"), text: provinces[i].getAttribute("ProvinceName") }));


            }
            this._cityPross(xmldoc);


        },
        _cityPross: function (xmldoc) {
            this.cityDDl.empty();
            if (this._defaults.firstop == true) {
                this.cityDDl.append($("<option/>", { val: '0', text: "选择城市" }));
            }


            do {
                var i = 0;
                for (i = 0; i < provinces.length; i++) {
                    if (provinces[i].getAttribute("ProvinceId") == this.provinceDDl.val()) {
                        break;
                    }


                }






                var citys = new Array();
                if (this.provinceDDl.val() != 0) {
                    citys = provinces[i].getElementsByTagName("City");
                }




                if (this._defaults.xdis || citys.length > 0 ) {
                    this.cityDDl.css("display", "inline");
                }
                else {
                    this.cityDDl.css("display", "none");
                }




                if (citys.length == 0) {
                    break;
                }




                for (var j = 0; j < citys.length; j++) {
                    this.cityDDl.append($("<option/>", { val: citys[j].getAttribute("CityId"), text: citys[j].getAttribute("CityName") }));
                }
            } while (false);


            this._districtPross(xmldoc);
        },
        _districtPross: function (xmldoc) {
            this.districtDDl.empty();
            if (this._defaults.firstop == true) {
                this.districtDDl.append($("<option/>", { val: '0', text: "选择地区" }));
            }
            do {
                var i = 0;
                for (i = 0; i < provinces.length; i++) {
                    if (provinces[i].getAttribute("ProvinceId") == this.provinceDDl.val()) {
                        break;
                    }


                }


                var citys = new Array();
                if (this.provinceDDl.val() != 0) {
                    citys = provinces[i].getElementsByTagName("City");
                }


                //                if (citys.length == 0) {
                //                    break;
                //                }


                var j = 0;
                for (j = 0; j < citys.length; j++) {
                    if (citys[j].getAttribute("CityId") == this.cityDDl.val()) {
                        break;
                    }
                }




                var districts = new Array();
                if (this.cityDDl.val() != 0) {
                    districts=citys[j].getElementsByTagName("District");
                }








                if (this._defaults.xdis || districts.length > 0) {
                    this.districtDDl.css("display", "inline");
                }
                else {
                    this.districtDDl.css("display", "none");
                }


                if (districts.length == 0) {


                    break;
                }




                for (var x = 0; x < districts.length; x++) {
                    this.districtDDl.append($("<option/>", { val: districts[x].getAttribute("DistrictId"), text: districts[x].getAttribute("DistrictName") }));
                }
            } while (false);
        },
        _getXmldocument: function (ld_url) {
            if (navigator.userAgent.indexOf("Opera") > -1) {
                ld_url += ("?seed=" + Math.random());
            };


            var lo_xmlhttp = this._createXmlhttp();
            if (!lo_xmlhttp) {
                return null;
            }


            lo_xmlhttp.open("GET", ld_url, false);
            lo_xmlhttp.send(null);


            var doc = "";
            if (lo_xmlhttp.status == 200) {
                doc = lo_xmlhttp.responseXML.documentElement;
                return doc;
            }
            return null;
        },
        _createXmlhttp: function () {
            var lo_http_request = false;
            if (window.ActiveXObject) {
                //var ld_xmlhttps=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
                var ld_xmlhttps = ["MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
                for (var l_i = 0; l_i < ld_xmlhttps.length; l_i++) {
                    try {
                        lo_http_request = new ActiveXObject(ld_xmlhttps[l_i]);
                        break;
                    }
                    catch (ld_e) {
                        lo_http_request = false;
                    };
                };
            }
            else {
                try {
                    lo_http_request = new XMLHttpRequest();
                }
                catch (ld_e) {
                    lo_http_request = false;
                };
            };
            return lo_http_request;
        }
    });




    $.fn.location = function (options) {
        return this.each(function () {
            window["location_" + $(this).attr("id")] = new Location();
            var location = window["location_" + $(this).attr("id")];
            location._attachLocation(this, options);
        });
    };


    $.extend($.fn, {
        GetProvinceObj: function () { return window["location_" + $(this).attr("id")].provinceDDl; },//获取省份选择框的对像
        GetProvinceVal: function () { return window["location_" + $(this).attr("id")].provinceDDl.val(); },//获取省份选择框的val属性
        GetCityObj: function () { return window["location_" + $(this).attr("id")].cityDDl; },//获取城市选择框的对像
        GetCityVal: function () { return window["location_" + $(this).attr("id")].cityDDl.val(); },//获取城市选择框的val属性
        GetDistrictObj: function () { return window["location_" + $(this).attr("id")].districtDDl; },//获取地区选择框的对像
        GetDistrictVal: function () { return window["location_" + $(this).attr("id")].districtDDl.val(); },//获取地区选择框的val属性
        GetProvinceTxt: function () { return window["location_" + $(this).attr("id")].provinceDDl.find("option:selected").text(); },//获取省份选择框的Text属性
        GetCityTxt: function () { return window["location_" + $(this).attr("id")].cityDDl.find("option:selected").text(); },//获取城市选择框的Text属性
        GetDistrictTxt: function () { return window["location_" + $(this).attr("id")].districtDDl.find("option:selected").text(); },//获取地区选择框的Text属性
        SetProvinceVal: function (v) { window["location_" + $(this).attr("id")].provinceDDl.val(v); },
        SetCityVal: function (v) { window["location_" + $(this).attr("id")].cityDDl.val(v); },
        SetDistrictVal: function (v) { window["location_" + $(this).attr("id")].districtDDl.val(v); },
        SetProvinceIndex: function (v) { window["location_" + $(this).attr("id")].provinceDDl.get(0).selectedIndex = v; },
        SetCityIndex: function (v) { window["location_" + $(this).attr("id")].cityDDl.get(0).selectedIndex = v; },
        SetDistrictIndex: function (v) { window["location_" + $(this).attr("id")].districtDDl.get(0).selectedIndex = v; }
    });






})(jQuery);   

有能力的自己扩展吧。。数据库是从网上下载再加已制作

配套XML和MSSQL数据库下载(XML的数据是从SQL中导出)

使用方法
 <div id="location"></div>


 $("#location").Location({
 xmlpatch:"Location.xml" //xml数据文件路经
 });
 
 $("#location").GetProvinceVal();//获取省份的值
 


点击下载

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值