省市区县纯js三级联动(改写版:可获取选择值)

页面导航:首页 > 网络编程 > JavaScript > 省市区县纯js三级联动(改写版:可获取选择值)

省市区县纯js三级联动(改写版:可获取选择值)

来源: 作者: 时间:2016-02-21 09:50 【

网上有许多js版本的三级联动,但是都没有完整的拿到 20540;的文章,或是没有拿全,在网上down了一个js,并对其进行修改,可获取到省市区县三项的 20540;,具体方式如下:jsp页面GBK编码

网上有许多js版本的三级联动,但是都没有完整的拿到值的文章,或是没有拿全,在网上down了一个js,并对其进行修改,可获取到省市区县三项的值,具体方式如下:


页面GBK编码:(在webRoot下)

在页面中添加地址隐藏域,一边向后台传值,省市县用“|”拼接出来,再到后台截取


<>
  
    省市县三级联动
    <script type="text/javascript" src="js/area.js"></script>
  
  
 
  	 

页面中获取值并判断的js如下:

<script type="text/javascript">
	
//这个函数是必须的,因为在area.js里每次更改地址时会调用此函数
function promptinfo()
{
    var address = document.getElementById('address');
    var s1 = document.getElementById('s1');
    var s2 = document.getElementById('s2');
    var town1 = document.getElementById('town1');
    if(s1.value!="请选择省" && s2.value=='请选择市'){//若只选择了第一项,则地址就为某某省
        address.value = s1.value;
    }
    if(s1.value!="请选择省" && s2.value!='请选择市'){//若只选择了前两项省和市,则地址就只显示"省|市"
        address.value = s1.value+"|"+s2.value;
    }
    if(s1.value=="请选择省"){//若什么都不选,则隐藏域地址为空串
        address.value="";
    }
}
   //获取区县的值(若不写这个触发函数,一直获取不到第三项区县的值,一直是默认值“请选择区县”)
   function getTown()
    {
        var address = document.getElementById('address');
        var s1 = document.getElementById('s1').value
        var s2 = document.getElementById('s2').value;
        var s3 = document.getElementById('s3').value;
        var town1 = document.getElementById('town1').value;
        town1 = s3;
        if(town1=="请选择区县"){
           address.value = s1+"|"+s2;
        }else{
           address.value = s1+"|"+s2+"|"+town1;
        }

    }
       </script>



area.js在webRoot-->js包下:

代码如下(GBK编码):

function Dsy() {
    this.Items = {};
}
Dsy.prototype.add = function (id, iArray) {
    this.Items[id] = iArray;
}
Dsy.prototype.Exists = function (id) {
    if (typeof(this.Items[id]) == "undefined") return false;
    return true;
}

function change(v) {
	//alert(v);//输出为0、1、2
    var str = "0";
    for (i = 0; i < v; i++) { 
    	str += ("_" + (document.getElementById(s[i]).selectedIndex - 1));
   	}
    var ss = document.getElementById(s[v]);
   // alert(ss.value);//输出为选中的省市区县的值
    with (ss) {
        length = 0;
        options[0] = new Option(opt0[v], opt0[v]);
        if (v && document.getElementById(s[v - 1]).selectedIndex > 0 || !v) {
        //alert(str);
            if (dsy.Exists(str)) {
                ar = dsy.Items[str];
                for (i = 0; i < ar.length; i++)options[length] = new Option(ar[i], ar[i]);
                if (v)options[0].selected = true;//网上有些版本写的是options[1],这样的话选择省后,二级市会自动被关联选中,不用鼠标选择,这样的操作不便取值
            }
        }
        if (++v < s.length) {change(v);}
    }
}
//下面这段代码主要是给默认值,然后页面中body中onload="setup();preselect('陕西省');promptinfo();"
/*function preselect(p_key) {
    //alert(p_key);
    var index;

    var provinces = new Array("北京市", "天津市", "上海市", "重庆市", "河北省", "山西省", "内蒙古", "辽宁省", "吉林省", "黑龙江省", "江苏省", "浙江省", "安徽省", "福建省", "江西省", "山东省", "河南省", "湖北省", "湖南省", "广东省", "广西", "海南省", "四川省", "贵州省", "云南省", "西藏", "陕西省", "甘肃省", "青海省", "宁夏", "新疆", "香港", "澳门", "台湾省");
    var cnt = provinces.length;
   // alert(cnt);
    for (i = 0; i < cnt; i++) {
        if (p_key == provinces[i]) {
            index = i;
            break;
        }
    }
    if (index < provinces.length) {
        document.getElementById(s[0]).selectedIndex = index + 1;
        change(1);
    }
}*/

var dsy = new Dsy();

dsy.add("0_0_0", ["东城区", "西城区", "崇文区", "宣武区", "朝阳区", "丰台区", "石景山区", "海淀区", "门头沟区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "怀柔区", "平谷区", "密云县", "延庆县", "延庆镇"]);
dsy.add("0_0", ["北京市"]);
dsy.add("0_1_0", ["和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "塘沽区", "汉沽区", "大港区", "东丽区", "西青区", "津南区", "北辰区", "武清区", "宝坻区", "蓟县", "宁河县", "芦台镇", "静海县", "静海镇"]);
dsy.add("0_1", ["天津市"]);
dsy.add("0_2_0", ["黄浦区", "卢湾区", "徐汇区", "长宁区", "静安区", "普陀区", "闸北区", "虹口区", "杨浦区", "闵行区", "宝山区", "嘉定区", "浦东新区", "金山区", "松江区", "青浦区", "南汇区", "奉贤区", "崇明县", "城桥镇"]);
dsy.add("0_2", ["上海市"]);
dsy.add("0_3_0", ["渝中区", "大渡口区", "江北区", "沙坪坝区", "九龙坡区", "南岸区", "北碚区", "万盛区", "双桥区", "渝北区", "巴南区", "万州区", "涪陵区", "黔江区", "长寿区", "合川市", "永川区市", "江津市", "南川市", "綦江县", "潼南县", "铜梁县", "大足县", "荣昌县", "璧山县", "垫江县", "武隆县", "丰都县", "城口县", "梁平县", "开县", "巫溪县", "巫山县", "奉节县", "云阳县", "忠县", "石柱土家族自治县", "彭水苗族土家族自治县", "酉阳土家族苗族自治县", "秀山土家族苗族自治县"]);
dsy.add("0_3", ["重庆市"]);
dsy.add("0_4_0", ["长安区", "桥东区", "桥西区", "新华区", "裕华区", "井陉矿区", "辛集市", "藁城市", "晋州市", "新乐市", "鹿泉市", "井陉县", "微水镇", "正定县", "正定镇", "栾城县", "栾城镇", "行唐县", "龙州镇", "灵寿县", "灵寿镇", "高邑县", "高邑镇", "深泽县", "深泽镇", "赞皇县", "赞皇镇", "无极县", "无极镇", "平山县", "平山镇", "元氏县", "槐阳镇", "赵县", "赵州镇"]);
dsy.add("0_4_1", ["桥西区", "桥东区", "宣化区", "下花园区", "宣化县", "张家口市宣化区", "张北县", "张北镇", "康保县", "康保镇", "沽源县", "平定堡镇", "尚义县", "南壕堑镇", "蔚县", "蔚州镇", "阳原县", "西城镇", "怀安县", "柴沟堡镇", "万全县", "孔家庄镇", "怀来县", "沙城镇", "涿鹿县", "涿鹿镇", "赤城县", "赤城镇", "崇礼县", "西湾子镇"]);
dsy.add("0_4_2", ["双桥区", "双滦区", "鹰手营子矿区", "承德县", "下板城镇", "兴隆县", "兴隆镇", "平泉县", "平泉镇", "滦平县", "滦平镇", "隆化县", "隆化镇", "丰宁满族自治县", "大阁镇", "宽城满族自治县", "宽城镇", "围场满族蒙古族自治县", "围场镇"]);
dsy.add("0_4_3", ["海港区", "山海关区", "北戴河区", "昌黎县", "昌黎镇", "抚宁县", "抚宁镇", "卢龙县", "卢龙镇", "青龙满族自治县", "青龙镇"]);
dsy.add("0_4_4", ["路北区", "路南区", "古冶区", "开平区", "丰润区", "丰南区", "遵化市", "迁安市", "滦县", "滦州镇", "滦南县", "倴城镇", "乐亭县", "乐亭镇", "迁西县", "兴城镇", "玉田县", "玉田镇", "唐海县", "唐海镇"]);
dsy.add("0_4_5", ["安次区", "广阳区", "霸州市", "三河市", "固安县", "固安镇", "永清县", "永清镇", "香河县", "淑阳镇", "大城县", "平舒镇", "文安县", "文安镇", "大厂回族自治县", "大厂镇"]);
dsy.add("0_4_6", ["新市区", "北市区", "南市区", "定州市", "涿州市", "安国市", "高碑店市", "满城县", "满城镇", "清苑县", "清苑镇", "易县", "易州镇", "徐水县", "安肃镇", "涞源县", "涞源镇", "定兴县", "定兴镇", "顺平县", "蒲阳镇", "唐县", "仁厚镇", "望都县", "望都镇", "涞水县", "涞水镇", "高阳县", "高阳镇", "安新县", "安新镇", "雄县", "雄州镇", "容城县", "容城镇", "曲阳县", "恒州镇", "阜平县", "阜平镇", "博野县", "博陵镇", "蠡县", "蠡吾镇"]);
dsy.add("0_4_7", ["桃城区", "冀州市", "深州市", "枣强县", "枣强镇", "武邑县", "武邑镇", "武强县", "武强镇", "饶阳县", "饶阳镇", "安平县", "安平镇", "故城县", "郑口镇", "景县", "景州镇", "阜城县", "阜城镇"]);
dsy.add("0_4_8", ["运河区", "新华区", "泊头市", "任丘市", "黄骅市", "河间市", "沧县", "沧州市新华区", "青县", "清州镇", "东光县", "东光镇", "海兴县", "苏基镇", "盐山县", "盐山镇", "肃宁县", "肃宁镇", "南皮县", "南皮镇", "吴桥县", "桑园镇", "献县", "乐寿镇", "孟村回族自治县", "孟村镇"]);
dsy.add("0_4_9", ["桥东区", "桥西区", "南宫市", "沙河市", "邢台县", "邢台市桥东区", "临城县", "临城镇", "内丘县", "内丘镇", "柏乡县", "柏乡镇", "隆尧县", "隆尧镇", "任县", "任城镇", "南和县", "和阳镇", "宁晋县", "凤凰镇", "巨鹿县", "巨鹿镇", "新河县", "新河镇", "广宗县", "广宗镇", "平乡县", "丰州镇", "威县", "洺州镇", "清河县", "葛仙庄镇", "临西县", "临西镇"]);
dsy.add("0_4_10", ["丛台区", "邯山区", "复兴区", "峰峰矿区", "武安市", "邯郸县", "南堡乡东小屯村", "临漳县", "临漳镇", "成安县", "成安镇", "大名县", "大名镇", "涉县", "涉城镇", "磁县", "磁州镇", "肥乡县", "肥乡镇", "永年县", "临洺关镇", "邱县", "新马头镇", "鸡泽县", "鸡泽镇", "广平县", "广平镇", "馆陶县", "馆陶镇", "魏县", "魏城镇", "曲周县", "曲周镇"]);
dsy.add("0_4", ["石家庄市", "张家口市", "承德市", "秦皇岛市", "唐山市", "廊坊市", "保定市", "衡水市", "沧州市", "邢台市", "邯郸市"]);
dsy.add("0_5_0", ["杏花岭区", "小店区", "迎泽区", "尖草坪区", "万柏林区", "晋源区", "古交市", "清徐县", "清源镇", "阳曲县", "黄寨镇", "娄烦县", "娄烦镇"]);
dsy.add("0_5_1", ["朔城区", "平鲁区", "山阴县", "岱岳乡", "应县", "金城镇", "右玉县", "新城镇", "怀仁县", "云中镇"]);
dsy.add("0_5_2", ["城区", "矿区", "南郊区", "新荣区", "阳高县", "龙泉镇", "天镇县", "玉泉镇", "广灵县", "壶泉镇", "灵丘县", "武灵镇", "浑源县", "永安镇", "左云县", "云兴镇", "大同县", "西坪镇"]);
dsy.add("0_5_3", ["城区", "矿区", "郊区", "平定县", "冠山镇", "盂县", "秀水镇"]);
dsy.add("0_5_4", ["城区", "郊区", "潞城市", "长治县", "韩店镇", "襄垣县", "古韩镇", "屯留县", "麟绛镇", "平顺县", "青羊镇", "黎城县", "黎侯镇", "壶关县", "龙泉镇", "长子县", "丹朱镇", "武乡县", "丰州镇", "沁县", "定昌镇", "沁源县", "沁河镇"]);
dsy.add("0_5_5", ["城区", "高平市", "泽州县", "南村镇", "沁水县", "龙港镇", "阳城县", "凤城镇", "陵川县", "崇文镇"]);
dsy.add("0_5_6", ["忻府区", "原平市", "定襄县", "晋昌镇", "五台县", "台城镇", "代县", "上馆镇", "繁峙县", "繁城镇", "宁武县", "凤凰镇", "静乐县", "鹅城镇", "神池县", "龙泉镇", "五寨县", "砚城镇", "岢岚县", "岚漪镇", "河曲县", "文笔镇", "保德县", "东关镇", "偏关县", "新关镇"]);
dsy.add("0_5_7", ["榆次区", "介休市", "榆社县", "箕城镇", "左权县", "辽阳镇", "和顺县", "义兴镇", "昔阳县", "乐平镇", "寿阳县", "朝阳镇", "太谷县", "明星镇", "祁县", "昭余镇", "平遥县", "古陶镇", "灵石县", "翠峰镇"]);
dsy.add("0_5_8", ["尧都区", "侯马市", "霍州市", "曲沃县", "乐昌镇", "翼城县", "唐兴镇", "襄汾县", "新城镇", "洪洞县", "大槐树镇", "古县", "岳阳镇", "安泽县", "府城镇", "浮山县", "天坛镇", "吉县", "吉昌镇", "乡宁县", "昌宁镇", "蒲县", "蒲城镇", "大宁县", "昕水镇", "永和县", "芝河镇", "隰县", "龙泉镇", "汾西县", "永安镇"]);
dsy.add("0_5_9", ["离石区", "孝义市", "汾阳市", "文水县", "凤城镇", "中阳县", "宁乡镇", "兴县", "蔚汾镇", "临县", "临泉镇", "方山县", "圪洞镇", "柳林县", "柳林镇", "岚县", "东村镇", "交口县", "水头镇", "交城县", "天宁镇", "石楼县", "灵泉镇"]);
dsy.add("0_5_10", ["盐湖区", "永济市", "河津市", "芮城县", "古魏镇", "临猗县", "猗氏镇", "万荣县", "解店镇", "新绛县", "龙兴镇", "稷山县", "稷峰镇", "闻喜县", "桐城镇", "夏县", "瑶峰镇", "绛县", "古绛镇", "平陆县", "圣人涧镇", "垣曲县", "新城镇"]);
dsy.add("0_5", ["太原市", "朔州市", "大同市", "阳泉市", "长治市", "晋城市", "忻州市", "晋中市", "临汾市", "吕梁市", "运城市"]);
dsy.add("0_6_0", ["回民区", "新城区", "玉泉区", "赛罕区", "托克托县", "双河镇", "武川县", "可可以力更镇", "和林格尔县", "城关镇", "清水河县", "城关镇", "土默特左旗", "察素齐镇"]);
dsy.add("0_6_1", ["昆都仑区", "东河区", "青山区", "石拐区", "白云矿区", "九原区", "固阳县", "金山镇", "土默特右旗", "萨拉齐镇", "达尔罕茂明安联合旗", "百灵庙镇"]);
dsy.add("0_6_2", ["海勃湾区", "海南区", "乌达区"]);
dsy.add("0_6_3", ["红山区", "元宝山区", "松山区", "宁城县", "天义镇", "林西县", "林西镇", "阿鲁科尔沁旗", "天山镇", "巴林左旗", "林东镇", "巴林右旗", "大板镇", "克什克腾旗", "经棚镇", "翁牛特旗", "乌丹镇", "喀喇沁旗", "锦山镇", "敖汉旗", "新惠镇"]);
dsy.add("0_6_4", ["科尔沁区", "霍林郭勒市", "开鲁县", "开鲁镇", "库伦旗", "库伦镇", "奈曼旗", "大沁他拉镇", "扎鲁特旗", "鲁北镇", "科尔沁左翼中旗", "保康镇", "科尔沁左翼后旗", "甘旗卡镇"]);
dsy.add("0_6_5", ["海拉尔区", "满洲里市", "扎兰屯市", "牙克石市", "根河市", "额尔古纳市", "阿荣旗", "那吉镇", "新巴尔虎右旗", "阿拉坦额莫勒镇", "新巴尔虎左旗", "阿穆古郎镇", "陈巴尔虎旗", "巴彦库仁镇", "鄂伦春自治旗", "阿里河镇", "鄂温克族自治旗", "巴彦托海镇", "莫力达瓦达斡尔族自治旗", "尼尔基镇"]);
dsy.add("0_6_6", ["东胜区", "达拉特旗", "树林召镇", "准格尔旗", "薛家湾镇", "鄂托克前旗", "敖勒召其镇", "鄂托克旗", "乌兰镇", "杭锦旗", "锡尼镇", "乌审旗", "嘎鲁图镇", "伊金霍洛旗", "阿勒腾席热镇"]);
dsy.add("0_6_7", ["集宁区", "丰镇市", "卓资县", "卓资山镇", "化德县", "长顺镇", "商都县", "商都镇", "兴和县", "城关镇", "凉城县", "岱海镇", "察哈尔右翼前旗", "土贵乌拉镇", "察哈尔右翼中旗", "科布尔镇", "察哈尔右翼后旗", "白音察干镇", "四子王旗", "乌兰花镇"]);
dsy.add("0_6_8", ["临河区", "五原县", "隆兴昌镇", "磴口县", "巴彦高勒镇", "乌拉特前旗", "乌拉山镇", "乌拉特中旗", "海流图镇", "乌拉特后旗", "巴音宝力格镇", "杭锦后旗", "陕坝镇"]);
dsy.add("0_6_9", ["乌兰浩特市", "阿尔山市", "突泉县", "突泉镇", "科尔沁右翼前旗", "大坝沟镇", "科尔沁右翼中旗", "巴彦呼硕镇", "扎赉特旗", "音德尔镇"]);
dsy.add("0_6_10", ["锡林浩特市", "二连浩特市", "多伦县", "多伦淖尔镇", "阿巴嘎旗", "别力古台镇", "苏尼特左旗", "满都拉图镇", "苏尼特右旗", "赛汉塔拉镇", "东乌珠穆沁旗", "乌里雅斯太镇", "西乌珠穆沁旗", "巴拉嘎尔郭勒镇", "太仆寺旗", "宝昌镇", "镶黄旗", "新宝拉格镇", "正镶白旗", "明安图镇", "正蓝旗", "上都镇"]);
dsy.add("0_6_11", ["巴彦浩特镇", "阿拉善右旗", "额肯呼都格镇", "额济纳旗", "达来呼布镇"]);
dsy.add("0_6", ["呼和浩特市", "包头市", "乌海市", "赤峰市", "通辽市", "呼伦贝尔市", "鄂尔多斯市", "乌兰察布市", "巴彦淖尔市", "兴安盟", "锡林郭勒盟", "阿拉善盟"]);
dsy.add("0_7_0", ["沈河区", "和平区", "大东区", "皇姑区", "铁西区", "苏家屯区", "东陵区", "新城子区", "于洪区", "新民市", "辽中县", "辽中镇", "康平县", "康平镇", "法库县", "法库镇"]);
dsy.add("0_7_1", ["双塔区", "龙城区", "北票市", "凌源市", "朝阳县", "朝阳市双塔区", "建平县", "喀喇沁左翼蒙古族自治县", "大城子镇"]);
dsy.add("0_7_2", ["海州区", "新邱区", "太平区", "清河门区", "细河区", "彰武县", "彰武镇", "阜新蒙古族自治县", "阜新镇"]);
dsy.add("0_7_3", ["银州区", "清河区", "调兵山市", "开原市", "铁岭县", "铁岭市银州区", "西丰县", "西丰镇", "昌图县", "昌图镇"]);
dsy.add("0_7_4", ["顺城区", "新抚区", "东洲区", "望花区", "抚顺县", "抚顺市顺城区", "新宾满族自治县", "新宾镇", "清原满族自治县", "清原镇"]);
dsy.add("0_7_5", ["平山区", "溪湖区", "明山区", "南芬区", "本溪满族自治县", "小市镇", "桓仁满族自治县", "桓仁镇"]);
dsy.add("0_7_6", ["白塔区", "文圣区", "宏伟区", "弓长岭区", "太子河区", "灯塔市", "辽阳县", "首山镇"]);
dsy.add("0_7_7", ["铁东区", "铁西区", "立山区", "千山区", "海城市", "台安县", "台安镇", "岫岩满族自治县", "岫岩镇"]);
dsy.add("0_7_8", ["振兴区", "元宝区", "振安区", "凤城市", "东港市", "宽甸满族自治县", "宽甸镇"]);
dsy.add("0_7_9", ["西岗区", "中山区", "沙河口区", "甘井子区", "旅顺口区", "金州区", "瓦房店市", "普兰店市", "庄河市", "长海县", "大长山岛镇"]);
dsy.add("0_7_10", ["站前区",