js三级省市区选择

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Province_three</title>
<style>
*{
    margin: 0;
    padding: 0;
    list-style: none;
    font: 400 12px/1.5 Arial,"Lucida Grande",Verdana,"Microsoft YaHei";
}
body{
    padding: 50px;
}
select{
    margin-right: 5px;
}
</style>
</head>

<body>

<script>
window.onload = function(){
    //
    var aProvince = [
        "浙江省",
        "江苏省",
        "广东省"
    ]
    var aCity = [
        ["杭州市","宁波市","舟山市","温州市","绍兴市"],
        ["苏州市","南京市"],
        ["广州市","深圳市"]
    ]
    var aArea = [
        [
            ["滨江区","西湖区","上城区"],
            ["海曙区","江东区","鄞州区","江北区"],
            ["定海区"],
            ["温岭区"],
            ["柯桥区"]
        ],
        [
            ["吴中区"],
            ["鼓楼区"]
        ],
        [
            ["越秀区","海珠区"],
            ["宝安区","龙岗区"]
        ]
    ]
    //fn
    function fnAddOption(innerH,target,isClear){
        var oOption = document.createElement("option");
        oOption.value = innerH;
        oOption.innerHTML = innerH;
        //clearOptions
        if(isClear){
            var tLength = target.children.length;
            for(var i=0; i<tLength; i++){
                target.removeChild(target.children[0]);
            }
        }
        target.appendChild(oOption);
    }

    function fnGetProvince(ele,initP,initC,initA){
        ele.innerHTML = ‘<select><option>--选择省--</option></select><select><option>--选择市--</option></select><select><option>--选择区--</option></select>‘;
        var oSelect1 = ele.getElementsByTagName("select")[0];
        var oSelect2 = ele.getElementsByTagName("select")[1];
        var oSelect3 = ele.getElementsByTagName("select")[2];
        for(var i=0; i<aProvince.length; i++){
            fnAddOption(aProvince[i],oSelect1);
            //initP
            if(typeof(initP)!="undefined" && initP == aProvince[i]){
                oSelect1.getElementsByTagName("option")[i+1].setAttribute("selected",true);
                onchangeS1();
                //initC
                if(typeof(initC)!="undefined"){
                    var oOptions = oSelect2.getElementsByTagName("option");
                    for(var j=0; j<oOptions.length; j++){
                        if(initC == oOptions[j].innerHTML){
                            oOptions[j].setAttribute("selected",true);
                            onchangeS2();
                            //initA
                            if(typeof(initA)!="undefined"){
                                var oOptions = oSelect3.getElementsByTagName("option");
                                for(var k=0; k<oOptions.length; k++){
                                    if(initA == oOptions[k].innerHTML){
                                        oOptions[k].setAttribute("selected",true);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            //init end
        }

        //select1 onchange event
        function onchangeS1(){
            var sIndex = oSelect1.selectedIndex;

            fnAddOption("--选择市--",oSelect2,true);
            fnAddOption("--选择区--",oSelect3,true);
            if(sIndex==0){
                return;
            }
            for(var i=0; i<aCity[sIndex-1].length; i++){
                fnAddOption(aCity[sIndex-1][i],oSelect2);
            }
        }
        oSelect1.onchange = onchangeS1;

        //select2 onchange event
        function onchangeS2(){
            var sIndex = oSelect1.selectedIndex;
            var sCityIndex = oSelect2.selectedIndex;

            fnAddOption("--选择区--",oSelect3,true);
            if(sCityIndex==0){
                return;
            }
            for(var i=0; i<aArea[sIndex-1][sCityIndex-1].length; i++){
                fnAddOption(aArea[sIndex-1][sCityIndex-1][i],oSelect3);
            }
        }
        oSelect2.onchange = onchangeS2;

    }

    //get fn
    var oDiv = document.getElementById("div1");
    fnGetProvince(oDiv,"广东省","深圳市","龙岗区");
}
</script>

<div id="div1"></div>

</body>
</html>

下面是二级省市选择:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Province_Two</title>
<style>
*{
    margin: 0;
    padding: 0;
    list-style: none;
    font: 400 12px/1.5 Arial,"Lucida Grande",Verdana,"Microsoft YaHei";
}
body{
    padding: 50px;
}
select{
    margin-right: 5px;
}
</style>
</head>

<body>

<script>
window.onload = function(){
    //
    var aProvince = [
        "浙江省",
        "江苏省",
        "广东省"
    ]
    var aCity = [
        ["杭州市","宁波市","舟山市","温州市","绍兴市"],
        ["苏州市","南京市"],
        ["广州市","深圳市"]
    ]

    //fn
    function fnAddOption(innerH,target){
        var oOption = document.createElement("option");
        oOption.value = innerH;
        oOption.innerHTML = innerH;
        target.appendChild(oOption);
    }

    function fnGetProvince(ele){
        ele.innerHTML = ‘<select><option>--请选择--</option></select><select><option>--请选择--</option></select>‘;
        var oSelect1 = ele.getElementsByTagName("select")[0];
        var oSelect2 = ele.getElementsByTagName("select")[1];
        for(var i=0; i<aProvince.length; i++){
            fnAddOption(aProvince[i],oSelect1);
        }

        //select onchange event
        oSelect1.onchange = function(){
            var sIndex = oSelect1.selectedIndex;
            var sOption = oSelect1[sIndex];

            oSelect2.innerHTML="";
            if(sIndex==0){
                fnAddOption("--请选择--",oSelect2);
                return;
            }
            for(var i=0; i<aCity[sIndex-1].length; i++){
                fnAddOption(aCity[sIndex-1][i],oSelect2);
            }
        }
    }

    //get fn
    var oDiv = document.getElementById("div1");
    fnGetProvince(oDiv);
}
</script>

<div id="div1"></div>

</body>
</html>
时间: 2024-10-10 06:25:18

js三级省市区选择的相关文章

【修改】纯JS省市区三级联动 支持js默认省市区

---恢复内容开始--- <!DOCTYPE html><html><head><title>修改,QQ JS省市区三级联动 -支持默认省市区</title><!-- 使用QQ的省市区数据 --><!--<script type="text/javascript" src="http://ip.qq.com/js/geo.js"></script>--><

vue仿京东省市区三级联动选择组件

工作中需要一个盒京东购物车地址选择相似的一个省市区三级联动选择组件,google查了下都是下拉框形式的,于是自己写了一个,希望对使用vue开发项目的朋友有帮助,显示效果如下:使用vue2.0开发 html代码如下 <!--居住地址三级联动选项--> <section class="showChose" v-show="showChose"> <section class="address"> <secti

全国最标准的、最完整的省市县三级联动选择 - 大型企业信息化系统集成快速开发平台

在使用通用权限管理系统时,需要经常使用省市县三级联动选择,在网上看到不少这类例子,感觉不是很满足我们的需求, 在使用的时候也用过通用权限系统中的省市县接口,为减少对接口的调用,现将其改为JS文件调用的方式:样式如下 JS文件截图 这个JS文件可根据基础信息中省市县资料的变更重新生成.其自动生成方法调用如下图: 省市县数据基本变化应该很小,为方便大家提供最新生成的JS文件和demo: district.js /* * UPDATE DATE:2015-01-06 22:04:16 songbiao

ios收货地址三级联动选择

这次的需求,是省市区三级联动选择,并且市的选择要根据省的id,然后区的选择要根据市的id 每次都要进行网络请求,关键代码,其实是 //监听轮子的移动 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component; 然后我就上传我的代码,这个代码我也是根据别人的修改的,因为需求不一样 1,创建一个View // //  IWAreaPickerVi

asp.net mvc中使用jquery H5省市县三级地区选择控件

地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp.net mvc中使用jquery H5省市县三级地区选择控件及中国省市县标准地区库下载地址 咨询QQ:806693619 一.实现原理 一般常用输入控件是input,当点击input的时候执行jquery获取焦点事情,然后弹出本地区选择插件,选择完地区后点击确定将选择的值返回给input完成地区输入

JS三级折叠菜单特效 自动收缩其它级

真的很不错!很实用,在IE6.IE7.IE8.FF.chrome等浏览器都正常运行,去掉CSS中 #menu ul中 {height:100px; overflow:auto;} 即可高度自适应 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html x

js手机联动选择地区仿ios 开源git

js手机联动选择地区 前言:由于网上找到了一个mobiscrool,比较全,但是不开源,只能试用15天,正式版竟然要三千块钱,穷人只能自己动手,写了个只针对弹窗地区选择的. 本站点所有的资源均在github上可以查看源代码 GitHub demo地址请点击这里 http://www.lovewebgames.com/jsmodule/mobile-select-area.html mobile-select-area 手机联动选择地区 用法 ##注:依赖于[dialog](https://git

jquery.chosen.js下拉选择框美化插件项目实例

由于之前使用的bootstrap-select插件是建立在bootstrap基础上的,实际使用到项目中的时候,与我们使用的ace-admin(基于bootstrap)存在样式冲突,导致下拉框的样式发生变化.为了界面的美观,不得已查资料寻找另外的插件. 使用jquery.chosen.js下拉选择框美化插件同样也能达到类似效果 完成效果如下 实现步骤如下 1.导入相关文件 <link rel="stylesheet" href="${ctxStatic}/css/chos

css和js禁止网页选择文字

user-select有两个值: none:用户不能选择文本 text:用户可以选择文本 需要注意的是:user-select并不是一个W3C的CSS标准属性,浏览器支持的不完整,需要对每种浏览器进行调整 <style> body{ -moz-user-select: none; /*火狐*/ -webkit-user-select: none; /*webkit浏览器*/ -ms-user-select: none; /*IE10*/ -khtml-user-select: none; /*