fei-yu9999

 

效果图:

 

 

 

 

 

HTML代码:

<!DOCTYPE html>
<html>
 
<head>
    <meta charset="utf-8" />
    <title></title>
    <link rel="stylesheet" type="text/css" href="layui/css/layui.css" />
    <link rel="stylesheet" type="text/css" href="css/select.css" />
</head>
 
<body>
    <form class="layui-form layui-form-pane" action="">
 
 
        <div class="layui-inline" style="padding-left: 9.1%;padding-top: 2%">
            <form class="layui-form layui-form-pane" action="javascript:;">
                <div class="layui-form-item" id="addressDiv">
                    <label class="layui-form-label">详细地址</label>
                    <div class="layui-input-inline">
                        <select name="P1" lay-filter="province" id="province">
                            <option></option>
                        </select>
                    </div>
                    <div class="layui-input-inline">
                        <select name="C1" lay-filter="city" id="city">
                            <option></option>
                        </select>
                    </div>
                    <div class="layui-input-inline">
                        <select name="A1" lay-filter="area" id="area">
                            <option></option>
                        </select>
                    </div>
                    <div class="layui-input-inline" id="addressDetail">
                        <input id="address" type="text" name="address" lay-verify="title" autocomplete="off"
                            placeholder="请输入具体地址" class="layui-input" style="width: 120%;">
                        <dl id="addressTip" class="addressDl">
                        </dl>
                    </div>
                </div>
            </form>
    </form>
 
    <script src="layui/layui.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/select.js" type="text/javascript" charset="utf-8"></script>
    </div>
</body>
 
</html>

js

//引入新的插件
layui.config({
    base: \'./js/\'//拓展模块的根目录
}).extend({
    pca: \'pca\'
});
 
 
//使用自定义的插件pca
layui.use([\'form\', \'layedit\', \'laydate\', \'upload\', "jquery", "pca"], function () {
    var $ = layui.$
        , form = layui.form
        , pca = layui.pca;
    //带初始值进行初始化
    pca.init(\'select[name=P1]\', \'select[name=C1]\', \'select[name=A1]\', \'浙江\', \'杭州\', \'滨江区\');
 
    //不带初始值
    // pca.init(\'select[name=P1]\', \'select[name=C1]\', \'select[name=A1]\');
 
    //输入提示
    $("#address").bind(\'input propertychange\', function () {
        var address = document.getElementById("address").value;
        if (address == "") {
            document.getElementById("addressTip").style.display = "none";
            return;
        }
        var html = \'\';
        var province = document.getElementById("province").value;
        if (province == "全部") {
            province = \'\';
        }
        var city = document.getElementById("city").value;
        if (city == "全部") {
            city = \'\';
        }
        var area = document.getElementById("area").value;
        if (area == "全部") {
            area = \'\';
        }
 
        //查询关键字
        var keywords = province + city + area + address;
 
        //此处使用的是自定义高德地图服务,可以根据情况进行修改
        $.ajax({
            type: "POST",
            url: "http://127.0.0.1:5050/map/inputTip.json",
            cache: false,
            async: false,
            data: {
                "keywords": keywords
            },
            dataType: "json",
            contentType: \'application/x-www-form-urlencoded\',
            headers: { \'Authorization\': \'bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50IjoiMTg4MTQ4NjgzOTUiLCJ1c2VySWQiOjYyMH0.llXwj27uSclj1ZcZ9nnzZVqBF7yI_LcS8PDCdUXzTBU\' },
            success: function (json) {
                var data = json.data.tips;//json数组
                for (var i = 0; i < data.length; i++) {
                    html += \'<dd lay-value="" class="addressDd" onclick="ddclick(this)">\' + data[i].name + \'<span style="color:#9c9a9a;font-size:5px;">&nbsp\' + data[i].address + \'</span>\' + \'</dd>\';
                }
            }
        });
 
        document.getElementById("addressTip").innerHTML = html;
        var s = document.getElementById("addressTip").innerHTML;
        if (html == "") {
            document.getElementById("addressTip").style.display = "none";
        } else {
            document.getElementById("addressTip").style.display = "block";
        }
 
        var lis = document.getElementById("addressDetail").getElementsByTagName("dd");
        for (var i = 0; i < lis.length; i++) {
            if (lis[i].tagName == "DD") {
                lis[i].onclick = (function () {//增加单击事件
                    return function () {
                        document.getElementById("address").value = this.innerText.trim().split(/\s+/)[0];
                        document.getElementById("addressTip").style.display = "none";
                    }
                }
                )
                    (i);
            }
 
        }
 
    }
    );
 
});

pca.js

layui.define([\'table\', \'form\', \'layer\', \'jquery\', \'element\'], function (exports) {
    var $ = layui.$;
    var form = layui.form;
 
    var pca = {};
    pca.keys = {};
    pca.ckeys = {};
 
    pca.init = function (province, city, area, initprovince, initcity, initarea, form) {//jQuery选择器, 省-市-区
        var form = layui.form;
        if (!province || !$(province).length) return;
        $(province).html(\'\');
        $(province).append(\'<option selected>全部</option>\');
        for (var i in citys) {
            $(province).append(\'<option>\' + citys[i].name + \'</option>\');
            pca.keys[citys[i].name] = citys[i];
        }
        form.render(\'select\');
        if (initprovince) $(province).next().find(\'[lay-value="\' + initprovince + \'"]\').click();
        if (!city || !$(city).length) return;
        pca.formRender(city);
        form.on(\'select(province)\', function (data) {
            var cs = pca.keys[data.value];
            $(city).html(\'\');
            $(city).append(\'<option>全部</option>\');
            if (cs) {
                cs = cs.city;
                for (var i in cs) {
                    $(city).append(\'<option>\' + cs[i].name + \'</option>\');
                    pca.ckeys[cs[i].name] = cs[i];
                }
                $(city).find(\'option:eq(1)\').attr(\'selected\', true);
            }
            form.render(\'select\');
            $(city).next().find(\'.layui-this\').removeClass(\'layui-this\').click();
            pca.formHidden(\'province\', data.value);
            $(\'.pca-label-province\').html(data.value);//此处可以自己修改 显示的位置, 不想显示可以直接去掉
        });
        if (initprovince) $(province).next().find(\'[lay-value="\' + initprovince + \'"]\').click();
        if (initcity) $(city).next().find(\'[lay-value="\' + initcity + \'"]\').click();
        if (!area || !$(area).length) return;
        pca.formRender(area);
        form.on(\'select(city)\', function (data) {
            var cs = pca.ckeys[data.value];
            $(area).html(\'\');
            $(area).append(\'<option>全部</option>\');
            if (cs) {
                cs = cs.area;
                for (var i in cs) {
                    $(area).append(\'<option>\' + cs[i] + \'</option>\');
                }
                $(area).find(\'option:eq(1)\').attr(\'selected\', true);
            }
            form.render(\'select\');
            $(area).next().find(\'.layui-this\').removeClass(\'layui-this\').click();
            pca.formHidden(\'city\', data.value);
            $(\'.pca-label-city\').html(data.value);    //此处可以自己修改 显示的位置, 不想显示可以直接去掉
        });
        form.on(\'select(area)\', function (data) {
            pca.formHidden(\'area\', data.value);
            $(\'.pca-label-area\').html(data.value);    //此处可以自己修改 显示的位置, 不想显示可以直接去掉
        });
        if (initprovince) $(province).next().find(\'[lay-value="\' + initprovince + \'"]\').click();
        if (initcity) $(city).next().find(\'[lay-value="\' + initcity + \'"]\').click();
        if (initarea) $(area).next().find(\'[lay-value="\' + initarea + \'"]\').click();
    }
 
    pca.formRender = function (obj) {
        $(obj).html(\'\');
        $(obj).append(\'<option>全部</option>\');
        form.render(\'select\');
    }
 
    pca.formHidden = function (obj, val) {
        if (!$(\'#pca-hide-\' + obj).length)
            $(\'body\').append(\'<input id="pca-hide-\' + obj + \'" type="hidden" value="\' + val + \'" />\');
        else
            $(\'#pca-hide-\' + obj).val(val);
    }
 
    var citys =
        [
            {
                "name": "北京",
                "city": [{
                    "name": "北京",
                    "area": ["东城区", "西城区", "崇文区", "宣武区", "朝阳区", "丰台区", "石景山区", "海淀区", "门头沟区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "平谷区", "怀柔区", "密云县", "延庆县"]
                }]
            },
            {
                "name": "天津",
                "city": [{
                    "name": "天津",
                    "area": ["和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "塘沽区", "汉沽区", "大港区", "东丽区", "西青区", "津南区", "北辰区", "武清区", "宝坻区", "宁河县", "静海县", "蓟县"]
                }]
            },
 
           //中间部分忽略,demo中已给出
           ......
 
            {"name": "钓鱼岛", "city": [{"name": "钓鱼岛", "area": ["钓鱼岛"]}]}
        ];
 
 
    exports(\'pca\', pca);
 
});

 

附上layui第三方组件网:https://fly.layui.com/extend/

分类:

技术点:

相关文章: