jquery 模块化(省市区三级联动)

利用input与ul列表结合实现自定义三级联动;

引入jquery与地区文件address.js

address.js的文件格式为

var provinceList = [{name:'北京', cityList:[
            {name:'北京市', areaList:['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区','密云县','延庆县']}
        ]},
    {name:'上海', cityList:[
            {name:'上海市', areaList:['黄浦区','卢湾区','徐汇区','长宁区','静安区','普陀区','闸北区','虹口区','杨浦区','闵行区','宝山区','嘉定区','浦东新区','金山区','松江区','青浦区','南汇区','奉贤区','崇明县']}
        ]},
    {name:'天津', cityList:[
            {name:'天津市', areaList:['和平区','河东区','河西区','南开区','河北区','红桥区','塘沽区','汉沽区','大港区','东丽区','西青区','津南区','北辰区','武清区','宝坻区','宁河县','静海县','蓟 县']}
        ]},
    {name:'重庆', cityList:[
            {name:'重庆市', areaList:['万州区','涪陵区','渝中区','大渡口区','江北区','沙坪坝区','九龙坡区','南岸区','北碚区','万盛区','双桥区','渝北区','巴南区','黔江区','长寿区','綦江县','潼南县','铜梁县','大足县','荣昌县','璧山县','梁平县','城口县','丰都县','垫江县','武隆县','忠 县','开 县','云阳县','奉节县','巫山县','巫溪县','石柱土家族自治县','秀山土家族苗族自治县','酉阳土家族苗族自治县','彭水苗族土家族自治县','江津市','合川市','永川市','南川市']}
        ]}]
<style>
    .container{
        font-size:0px;
    }
    .select{
        display: inline-block;
        position: relative;
    }
    input{
        height:30px;
        border-radius: 3px;
        border: solid 1px #000;
        -moz-appearance: none;
        text-align: center;
        cursor:pointer;
    }
    .list{
        position: absolute;
        top:35px;
    }
    #province{
        width:150px;
    }
    #city{
        width:150px;
    }
    #area{
        width:150px;
    }
    textarea{
        margin-top: 20px;
        box-sizing: border-box;
        width:600px;
        resize: none;
        padding: 10px;
    }
    ul{ 
        margin: 0;
        padding: 0;
        list-style: none;
        max-height:200px;
        overflow: auto;
        cursor:pointer;
        background: white;
        display: none;
        border:1px solid #e6e6e8;
        font-size: 14px;
    }
    #c1{
        width:150px;
        text-align:center;
    }
    #c1 li{
        margin:5px auto;
    }
    #c2{
        width:150px;
        text-align:center;
    }
    #c2 li{
        margin:5px auto;
    }
    #c3{
        width:150px;
        text-align:center;
    }
    #c3 li{
        margin:5px auto;
    }
</style>
<div class="container">
<div class="select">
    <input type="text" id="province" name="Province"  placeholder="请选择省" readonly>
    <div class="list">
        <ul id="c1"></ul>
    </div>
</div>
<div class="select">
    <input  type="text" id="city" name="City" placeholder="请选择市" readonly>
    <div class="list">
        <ul id="c2"></ul>
    </div>
</div>
<div class="select">
    <input type="text" id="area" name="Area" placeholder="请选择区" readonly>
    <div class="list">
        <ul id="c3"></ul>
    </div>
</div>
</div>
<script>
    var $li1='';
    var $li2='';
    var $li3='';
    var city;
    var area;
    $.each(provinceList,function (i,val) {
        $li1+="<li obj='"+i+"'>"+val.name+"</li>";
    });
    $("#c1").append($($li1));
    $("#province").click(function(){
        $("#c1").show();
        $("#c2").hide();
        $("#c3").hide();


    });
    $("#province").change(function(){
        $("#city").val("");
        $("#area").val("");
    })
    $("#city").click(function () {
        
        $("#c2").show();
        $("#c1").hide();
        $("#c3").hide();
    });
    $("#city").change(function(){
        $("#area").val("");
    })
    $("#area").click(function () {
        $("#c3").show();
        $("#c1").hide();
        $("#c2").hide();
    });

    $("#c1").on("click","li",function(){
        var i=$(this).attr("obj");
        city= provinceList[i].cityList;
        //取得值
        // alert(city[0].name);
        var text=$(this).text();
        if(text!=$("#province").val()){
            $("#province").val(text);
            $("#c1").hide();
            $("#c2").empty();
            $li2="";
            //添加节点
            $.each(city,function (i,val) {
                $li2+="<li obj='"+i+"'>"+val.name+"</li>";
            });
            $("#c2").append($($li2));
            $("#c2").show();
            $("#province").trigger("change");
        }else{
            $("#c1").hide();
        }
        
       
       
    });
    $("#c2").on("click","li",function(){
        var i=$(this).attr("obj");
        area=city[i].areaList;
        var text=$(this).text();
        if(text!=$("#city").val()){
            $("#city").val(text);

            $("#c2").hide();
            $("#c3").empty();
            $li3="";
            $.each(area,function(i,val){
                $li3+="<li>"+val+"</li>"
            });
            $("#c3").append($($li3));
            $("#c3").show();
            $("#city").trigger("change");
        }else{
            $("#c2").hide();
        }
    });
    $("#c3").on("click","li",function(){
        var text=$(this).text();
        $("#area").val(text);
        $("#c3").hide();
    });
</script>

 

 

//省市区文件可留言私传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值