`
hdu0704
  • 浏览: 12802 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

省市二级联动js代码

 
阅读更多
昨天接到个需求,里面有需要做省市二级联动。做的过程中遇到一些新手常见的问题,先贴代码。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs
/jquery/1.4.0/jquery.min.js"></script>
</head>
<body>

<script>
var _citis = [
[ "浙江省", "杭州市", "宁波市", "温州市", "嘉兴市", "湖州市", "绍兴市", "金华市", "衢州市",
"舟山市", "台州市", "丽水市" ],
[ "安徽省", "合肥市", "芜湖市", "蚌埠市", "淮南市", "马鞍山市", "淮北市", "铜陵市", "安庆市",
"黄山市", "滁州市", "阜阳市", "宿州市", "巢湖市", "六安市", "亳州市", "池州市",
"宣城市" ],
[ "北京市", "北京市" ],
[ "重庆市", "重庆市" ],
[ "福建省", "福州市", "厦门市", "莆田市", "三明市", "泉州市", "漳州市", "南平市", "龙岩市",
"宁德市" ],
[ "广东省", "广州市", "韶关市", "深圳市", "珠海市", "汕头市", "佛山市", "江门市", "湛江市",
"茂名市", "肇庆市", "惠州市", "梅州市", "汕尾市", "河源市", "阳江市", "清远市",
"东莞市", "中山市", "潮州市", "揭阳市", "云浮市" ],
[ "广西壮族自治区", "南宁市", "柳州市", "桂林市", "梧州市", "北海市", "防城港市", "钦州市",
"贵港市", "玉林市", "百色市", "贺州市", "河池市", "来宾市", "崇左市" ],
[ "甘肃省", "兰州市", "嘉峪关市", "金昌市", "白银市", "天水市", "武威市", "张掖市", "平凉市",
"酒泉市", "庆阳市", "定西市", "陇南市", "临夏回族自治州", "甘南藏族自治州" ],
[ "贵州省", "贵阳市", "六盘水市", "遵义市", "安顺市", "铜仁地区", "黔西南布依族苗族自治州",
"毕节地区", "黔东南苗族侗族自治州", "黔南布依族苗族自治州" ],
[ "河北省", "石家庄市", "唐山市", "秦皇岛市", "邯郸市", "邢台市", "保定市", "张家口市", "承德市",
"沧州市", "廊坊市" ],
[ "湖北省", "武汉市", "黄石市", "十堰市", "宜昌市", "襄樊市", "鄂州市", "荆门市", "孝感市",
"荆州市", "黄冈市", "咸宁市", "随州市", "恩施土家族苗族自治州", "仙桃市", "潜江市",
"天门市", "神农架林区" ],
[ "黑龙江省", "哈尔滨市", "齐齐哈尔市", "鸡西市", "鹤岗市", "双鸭山市", "大庆市", "伊春市",
"佳木斯市", "七台河市", "牡丹江市", "绥化市", "大兴安岭地区" ],
[ "河南省", "郑州市", "开封市", "洛阳市", "平顶山市", "安阳市", "鹤壁市", "新乡市", "焦作市",
"濮阳市", "许昌市", "漯河市", "三门峡市", "南阳市", "商丘市", "信阳市", "周口市",
"驻马店市", "济源市" ],
[ "湖南省", "长沙市", "株洲市", "湘潭市", "衡阳市", "邵阳市", "岳阳市", "常德市", "张家界市",
"益阳市", "郴州市", "永州市", "怀化市", "娄底市", "湘西土家族苗族自治州" ],
[ "海南省", "海口市", "三亚市", "五指山市", "琼海市", "儋州市", "文昌市", "万宁市", "东方市",
"定安县", "屯昌县", "澄迈县", "临高县", "白沙黎族自治县", "昌江黎族自治县",
"乐东黎族自治县", "陵水黎族自治县", "保亭黎族苗族自治县", "琼中黎族苗族自治县", "西沙群岛",
"南沙群岛", "中沙群岛的岛礁及其海域" ],
[ "吉林省", "长春市", "吉林市", "四平市", "辽源市", "通化市", "白山市", "松原市", "白城市",
"延边朝鲜族自治州" ],
[ "江苏省", "南京市", "无锡市", "徐州市", "常州市", "苏州市", "南通市", "连云港市", "淮安市",
"盐城市", "扬州市", "镇江市", "泰州市", "宿迁市" ],
[ "江西省", "南昌市", "景德镇市", "萍乡市", "九江市", "新余市", "鹰潭市", "赣州市", "吉安市",
"宜春市", "抚州市", "上饶市" ],
[ "辽宁省", "沈阳市", "大连市", "鞍山市", "抚顺市", "本溪市", "丹东市", "锦州市", "营口市",
"阜新市", "辽阳市", "盘锦市", "铁岭市", "朝阳市", "葫芦岛市" ],
[ "内蒙古自治区", "呼和浩特市", "包头市", "乌海市", "赤峰市", "通辽市", "鄂尔多斯市", "呼伦贝尔市",
"巴彦淖尔市", "乌兰察布市", "兴安盟", "锡林郭勒盟", "阿拉善盟" ],
[ "宁夏回族自治区", "银川市", "石嘴山市", "吴忠市", "固原市", "中卫市" ],
[ "青海省", "西宁市", "海东地区", "海北藏族自治州", "黄南藏族自治州", "海南藏族自治州", "果洛藏族自治州",
"玉树藏族自治州", "海西蒙古族藏族自治州" ],
[ "上海市", "上海市" ],
[ "四川省", "成都市", "自贡市", "攀枝花市", "泸州市", "德阳市", "绵阳市", "广元市", "遂宁市",
"内江市", "乐山市", "南充市", "眉山市", "宜宾市", "广安市", "达州市", "雅安市",
"巴中市", "资阳市", "阿坝藏族羌族自治州", "甘孜藏族自治州", "凉山彝族自治州" ],
[ "山东省", "济南市", "青岛市", "淄博市", "枣庄市", "东营市", "烟台市", "潍坊市", "济宁市",
"泰安市", "威海市", "日照市", "莱芜市", "临沂市", "德州市", "聊城市", "滨州市",
"菏泽市" ],
[ "山西省", "太原市", "大同市", "阳泉市", "长治市", "晋城市", "朔州市", "晋中市", "运城市",
"忻州市", "临汾市", "吕梁市" ],
[ "陕西省", "西安市", "铜川市", "宝鸡市", "咸阳市", "渭南市", "延安市", "汉中市", "榆林市",
"安康市", "商洛市" ],
[ "天津市", "天津市" ],
[ "台湾省", "台北市", "高雄市", "基隆市", "新竹市", "台中市", "嘉义市", "台南市", "台北县",
"宜兰县", "桃园县", "新竹县", "苗栗县", "台中县", "彰化县", "南投县", "云林县",
"嘉义县", "台南县", "高雄县", "屏东县", "台东县", "花莲县", "澎湖县" ],
[ "特别行政区", "香港特别行政区", "澳门特别行政区" ],
[ "西藏自治区", "拉萨市", "昌都地区", "山南地区", "日喀则地区", "那曲地区", "阿里地区", "林芝地区" ],
[ "新疆维吾尔自治区", "乌鲁木齐市", "克拉玛依市", "吐鲁番地区", "哈密地区", "昌吉回族自治州",
"博尔塔拉蒙古自治州", "巴音郭楞蒙古自治州", "阿克苏地区", "克孜勒苏柯尔克孜自治州", "喀什地区",
"和田地区", "伊犁哈萨克自治州", "塔城地区", "阿勒泰地区", "石河子市", "阿拉尔市",
"图木舒克市", "五家渠市" ],
[ "云南省", "昆明市", "曲靖市", "玉溪市", "保山市", "昭通市", "丽江市", "普洱市", "临沧市",
"楚雄彝族自治州", "红河哈尼族彝族自治州", "文山壮族苗族自治州", "西双版纳傣族自治州",
"大理白族自治州", "德宏傣族景颇族自治州", "怒江傈僳族自治州", "迪庆藏族自治州" ] ];

function init(){
var provinces = getProvinces() ;
for(var i = 0 ,length=provinces.length;i < length ; i += 1){
$('#sel1').append("<option value='"+provinces[i]+"'>"+provinces[i]+"</option>");
}
refreshCity($('#sel1').val());
}

function getProvinces(){
var provinces = new Array() ;
for(var i = 0 , length = _citis.length ; i < length ; i += 1) {
provinces.push(_citis[i][0]) ;
}
return provinces; 
}

function getCitis(province) {
for(var i = 0 , length = _citis.length ; i < length ; i += 1) {
if(province == _citis[i][0]){
return _citis[i].slice(1) ;
}
}
}

function refreshCity(province){
$('#sel2').empty();
var citys = getCitis(province);
for(var i = 0 ,length=citys.length;i < length ; i += 1){
$('#sel2').append("<option value='"+citys[i]+"'>"+citys[i]+"</option>");
}
}

/*代码一*/
$('#sel1').change(function(){
var province = $('#sel1').val();
refreshCity($('#sel1').val());
});

/*代码二
window.onload = function(){
var select = document.getElementById('sel1');//$('#sel1');//$('#sel1')[0];
select.onchange = function(){
var province = select.value;
refreshCity(select.value);
}
}*/
$(function(){
init();
});

</script>

所在地区:</span><select id ="sel1" class="mySet_select mr10">
</select><select id ="sel2" class="mySet_select mr10"></select><br/>
</body>
</html>
 

 按照这个代码是没有联动效果的。原因是当代码一执行的时候,select标签的内容还没加载,而jquery的元素选择器是依赖于HTML DOM树。解决方法:将下拉框放在js代码前面或者将代码一放在$(function(){}里面。

 

当使用代码二原生js的时候,发现将var select = document.getElementById('sel1');改成var select =$('#sel1');后也会没有联动效果。猜想是由于jquery选取的是一组元素,修改为var select =$('#sel1')[0];即可解决。

分享到:
评论

相关推荐

    省市二级联动JS 代码

    省市二级联动JS代码是一种常见的前端开发技术,常用于创建具有交互性的网页表单,特别是当用户需要选择地理位置信息时。这种技术使得用户在选择省份后,下拉菜单会自动更新为对应省份的城市列表,提供了良好的用户...

    省市二级联动代码JS

    标题中的“省市二级联动代码JS”指的是在网页开发中实现的一种交互功能,它允许用户在选择省份后,自动更新下拉菜单以显示对应省份的城市,从而实现两级联动的效果。这种功能通常用于地址输入或者区域筛选等场景,...

    省市二级联动代码JS(无数据库)

    这段JavaScript代码实现了一个常见的前端功能——省市二级联动选择器。所谓“二级联动”,指的是在一个下拉列表(或者类似的控件)的选择变化时,另一个关联的下拉列表中的选项也会相应地动态改变。例如,在一个表单...

    js省市二级、三级联动完美代码

    这个"js省市二级、三级联动完美代码"压缩包中的"city"文件可能包含了实现这种联动效果的具体代码,可能包括HTML、CSS和JavaScript文件。你可以通过查看这些文件来学习实际的实现细节,包括如何组织数据、如何处理DOM...

    省市二级联动js版(2)

    在这个"省市二级联动js版(2)"中,我们将探讨如何使用JavaScript实现这一功能。 首先,我们需要了解基本的HTML结构。在HTML页面中,我们通常会有两个`&lt;select&gt;`元素,分别代表省份和城市。省份的`&lt;select&gt;`会提供...

    jQuery的手机端省市二级联动选择代码.zip

    两级联动选择插件调用: $('.select-value').mPicker({ //级别 level:2, //需要渲染的json,二级联动的需要嵌套子元素,有一定的json格式... jQuery手机端省市二级联动选择代码是一款非常实用的城市选择器插件。

    jquery 省市二级联动

    一段很简单的代码实现的全国二级城市联动选择效果 代码部分很简单,看过即会使用 主要字段内容在city.data.js中,如果需要修改城市名称,到里面找到对应的文字修改,或者添加即可

    jQuery省市二级联动关联店面查询表单代码

    在这个“jQuery省市二级联动关联店面查询表单代码”项目中,开发者利用jQuery实现了用户友好的店面查询功能,特别适用于网络营销场景,帮助用户快速找到连锁店铺的全国网点。 首先,我们要理解“省市二级联动”的...

    省市二级联动js

    详细的省市二级联动。数据直接定义在js里面的数组里面

    JQuery省、省市二级联动、省市县/区三级联动

    这里提到的"JQuery省、省市二级联动、省市县/区三级联动"是一个使用jQuery库实现的前端解决方案,它能为用户提供流畅且视觉效果良好的交互体验。 jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、...

    JS身份证省市二级联动代码JS(无数据库相当的方便)

    在这个压缩包中的"JS身份证省市二级联动代码JS(无数据库相当的方便).html"文件,应该包含了实现这个功能的HTML、CSS和JavaScript代码。打开这个文件,你可以看到具体的实现方式,包括如何组织数据,如何编写事件监听...

    省市二级联动代码与数据库

    省市二级联动代码与数据库是网页开发中常见的功能,主要用于用户选择地理位置时,如省和市。这个功能在很多网站和应用程序中都能见到,比如在线购物、地图服务、求职招聘等。实现这一功能主要依赖于后端服务器(如...

    省市二级联动(JavaScript 页面无刷新)

    在提供的压缩包文件"JS省市二级联动"中,可能包含了实现这一功能的示例代码,包括HTML、CSS和JavaScript文件。通过查看和学习这些代码,你可以更深入地理解如何使用JavaScript来实现省市二级联动的效果。此外,你还...

    js省市二级联动

    在网页开发中,"js省市二级联动"是一个常见的交互功能,尤其在地址选择、表单填写等场景下。这个功能允许用户首先选择省份,然后根据所选省份动态加载对应的市,形成一个连贯的选择流程。这里我们将深入探讨如何实现...

    jQuery移动端省市二级联动选择插件.zip

    "jQuery移动端省市二级联动选择插件"是专为解决这个问题而设计的一个工具,它利用JavaScript和jQuery库,提供了高效、易用的解决方案。这个插件允许用户在手机或平板设备上方便地选择省份和城市,极大地提升了用户...

    省市二级联动 jqury 做的

    至于压缩包中的文件,"省市二级联动"可能是包含了HTML、CSS和JavaScript代码的文件,或者是包含了一个完整的示例项目的压缩文件。开发者可能通过注释和示例来解释如何配置和使用这个二级联动功能。在实际应用中,...

    php代码实现二级联动下拉菜单效果

    在网页设计中,二级联动下拉菜单是一种常见的交互元素,常用于分类选择或者地区筛选等场景。这种功能的实现通常涉及到前端和后端的交互,其中PHP作为后端语言,负责处理数据并返回给前端。本篇文章将详细介绍如何...

    基于ASP的省市二级联动

    标题 "基于ASP的省市二级联动" 指的是在网页设计中使用Active Server Pages (ASP) 技术实现的一种交互功能。在这个功能中,当用户选择一个省份时,相应的城市列表会动态地在第二个下拉框中加载。这种联动效果在网站...

    uniapp 二级联动.zip

    本项目"uniapp 二级联动.zip"显然是一个关于使用uniapp进行二级联动功能开发的实践案例,这在很多数据筛选、地区选择等场景中非常常见。下面,我们将深入探讨uniapp二级联动的实现原理和相关知识点。 首先,理解...

Global site tag (gtag.js) - Google Analytics