微信截图_20210608144704.png

自己在写一个拼车公众号,用到省市三级联动,网上找到一个非常好用,前提是在pc页面或者是手机浏览器界面,但是发现在微信自带浏览器里面并不好用,不弹窗,于是在网上找有此功能的代码,找到好多但是都是一个页面里面只有一个三级联动有效,无法不修改的情况下实现同一个页面里面有多个三级联动的效果。于是趁周末的时候自己写了一个js自己写的好用多啦 哈哈,把代码放一下。

0、首先我有一个数据库记录的是全国的省市县 有需要的可以来拿。

0.1、通过自己写个程序生成了一个全国省市县的js数据文件,为的就是让我的js里面的数据可我后台数据库内的数据能够完全一致,因为网上找的js文件和我数据库里面的城市id不一样导致我的其他数据混乱。想过使用ajax从数据库拿数据,但是觉得有点儿不够快。如果有需要的朋友可以修改里面的js换成ajax的。反正我是用着自己的方便。

1、前段html代码的实现

<input id="city" style="color:#d7d7d7;padding-left:5px;" 
                data-input_province_name="from_where_province" 
                data-input_city_name="from_where_city" 
                data-input_town_name="from_where_town"
                placeholder="请选择城市" />

这里有三个自定义的data 就是后面你可能用到的input 的name在上面的input里面自定义

<input type="hidden" name="from_where_town"  id="from_where_town" >
<input type="hidden" name="from_where_city"  id="from_where_city">
<input type="hidden" name="from_where_province"  id="from_where_province">

2、然后是一个隐藏的大div 里面是一个tab切换,用来切换省市县

<div class="selectCityFix">
        <div class="cityTab">
            <div class="cityTabName cityCurrent tabNameProvince"><a>选择省份</a></div>
            <div class="cityTabName tabNameCity"><a>选择城市</a></div>
            <div class="cityTabName tabNameTown"><a>选择区县</a></div>
            <div class="cityTabName tabClose" onclick="resetCity()"><a>关闭</a></div>
        </div>
        <div class="cityLists">
            <div class="cityList cityListProvince"></div>
            <div class="cityList cityListCity"></div>
            <div class="cityList cityListTown"></div>
        </div>
    </div>
<style>
    .selectCityFix{position:fixed; left:0; bottom:0; height:300px; width:100%; display:none; }
    .cityTab{height:40px; line-height:40px; border-bottom:1px solid #dedede; background:#f0f0f0}
    .cityTabName{float:left; width:25%; text-align:center;}
    .cityTabName:last-child a{border:none;}
    .cityTabName a{border-right:1px solid #dedede; display:block;}
    .cityCurrent{background:rgb(132,194,84); color:#ffffff;}
    .cityLists{height:260px; overflow-y:auto;}
    .cityLists .cityListData{display:block; padding-left:15px; line-height:40px; border-bottom:1px solid #ededed;}
    .cityListCity,.cityListTown{display:none;}
</style>

3、数据文件要引用

<script type="text/javascript" src="/static/js/cityDataJson.js"></script>
<script src="/static/js/selectCity.js"></script>

第一个是数据文件

微信截图_20210608150440.png

第二个是一些操作

微信截图_20210608150542.png

代码贴太多了直接放文件吧,我把城市切换的tab放在js里面了(这里插播一个笑话:程序员最讨厌的两件事一个是写注释,另一个是看别人的代码没有注释)

4、最后在引用的html页面写一段js代码

<script type="text/javascript">
    $(document).ready(function(){
        $(".cityTab div").click(function(){
            var tabIndex = $(this).index();
            cityTab(tabIndex)
        })

        selectCity('#city');
        //selectCity('#to_where');页面里面有几个就写几个吧
    });
</script>

附件:

selectCity.rar

city.sql.rar