文档章节

基于layui的select区域联动

SummerGao
 SummerGao
发布于 2018/05/25 13:03
字数 649
阅读 755
收藏 0

基于layui的select区域联动

要实现联动效果注意两点:

第一要可以监听到select的change事件;

第二异步加载的内容,需要重新渲染后才可以 正常使用。

Html结构:

<div class="x-body">
    <form class="layui-form" action="" method="post">
        <div class="layui-form-item">
            <label class="layui-form-label">选择地区</label>
            <div class="layui-input-inline">
                <select name="province" lay-filter="province" id="s_p">
                    <option value="1">请选择省</option>
                </select>
            </div>
            <div class="layui-input-inline">
                <select name="city" lay-filter="city" id="s_c">
                    <option value="1">请选择市</option>
                </select>
            </div>
            <div class="layui-input-inline">
                <select name="area" lay-filter="area" id="s_x">
                    <option value="1">请选择区/县</option>
                </select>
            </div>
        </div>
        <div>
            <label class="layui-form-label">选择地区</label>
            <div class="layui-input-inline">
                <select name="towns" lay-filter="towns" id="s_t">
                    <option value="1">请选择乡镇/街道</option>
                </select>
            </div>
            <!--<div class="layui-input-inline">-->
                <!--<select name="burg" lay-filter="burg" id="s_b">-->
                    <!--<option value="1">庄/村</option>-->
                <!--</select>-->
            <!--</div>-->
        </div>
    </form>
</div>

Js:

<script type="text/javascript">

    layui.use(['form', 'layer', 'laytpl', 'jquery'], function () {
        var form = layui.form
            , $ = layui.jquery;

        var parentId = '0';
        $(function () {
            $.post(serverPath + "sys/area/backProvince/" + parentId, function (result) {
                var p = result;
                for (v in p) {
                    var pp = p[v].id;
                    $("#s_p").append("<option value=" + pp + ">" + p[v].fullname + "</option>")
                }
                form.render();
            })

            form.on('select(province)', function (data) {
                var p = $("#s_p").val();
                if (p != "1") {
                    $.post(serverPath + "sys/area/backProvince/" + p, function (result) {
                        var c = result;
                        $("#s_c").html("");
                        $("#s_c").append("<option value='1'>请选择市</option>");
                        $("#s_x").html("");
                        $("#s_x").append("<option value='1'>请选择县/区</option>");
                        $("#s_t").html("");
                        $("#s_t").append("<option value='1'>请选择乡镇/街道</option>");
                        $("#s_b").html("");
                        $("#s_b").append("<option value='1'>请选择村/街道号</option>");
                        for (v in c) {
                            var cc = c[v].id;
                            $("#s_c").append("<option value=" + cc + ">" + c[v].fullname + "</option>")
                        }
                        form.render();
                    })
                }
            });
            form.on('select(city)', function (data) {
                var c = $("#s_c").val();
                if (c != "1") {
                    $.post(serverPath + "sys/area/backProvince/" + c, function (result) {
                        var x = result;
                        $("#s_x").html("");
                        $("#s_x").append("<option value='1'>请选择县/区</option>");
                        $("#s_t").html("");
                        $("#s_t").append("<option value='1'>请选择乡镇/街道</option>");
                        $("#s_b").html("");
                        $("#s_b").append("<option value='1'>请选择村/街道号</option>");
                        for (v in x) {
                            var xx = x[v].id;

                            $("#s_x").append("<option value=" + xx + ">" + x[v].fullname + "</option>")
                        }
                        form.render();
                    });
                }
            });
            form.on('select(area)', function (data) {
                var x = $("#s_x").val();
                if (x != "1") {
                    $.post(serverPath + 'sys/area/backProvince/'+ x, function (result) {
                        var t = result;
                        $("#s_t").html("");
                        $("#s_t").append("<option value='1'>请选择乡镇/街道</option>");
                        $("#s_b").html("");
                        $("#s_b").append("<option value='1'>请选择村/街道号</option>");
                        for (v in t) {
                            var xx = t[v].id;
                            $("#s_t").append("<option value=" + xx + ">" + t[v].fullname + "</option>")
                        }
                        form.render();
                    });
                }
            });


        });
    });


</script>

总结:

1.select的chage监听事件使用

form.on('select(myselect)', function(data){}) 其中myselect是select的 lay-filter属性值

2.数据异步加载到select的option中之后,点击该select会发现layui的选中效果不起作用,需要使用form.render('select');重新渲染一次,就可以正常使用。

© 著作权归作者所有

SummerGao
粉丝 4
博文 201
码字总数 74336
作品 0
济南
高级程序员
私信 提问
maplemei/layui select多选

文档地址 演示站点 基于Layui的select多选解决方案 formSelects有哪些功能 基础功能 高级功能 多级联动 目录结构 ├─dist //编译后的代码, 可直接用于生产环境│ │─formSelects-v3.js //v...

maplemei
2018/07/23
0
0
pelin0963/layuiExtend

layuiExtend——dynamicCondition 项目介绍 最近做一个档案系统,发现字段超多,查询页面布局不是很好弄,于是就想着干脆写一个动态添加条件的ui插件。 因为是用的layui框架写的系统,所以就...

pelin0963
01/11
0
0
daylyknowledge1

1.数据库截取字符串: toFixed():四舍五入 substring(cpintroduce,0,11) cpintroduce 前台截取: field: 'an_content', title: '问题内容', formatter: function (value) { if (value.le......

beingdone
2018/07/28
0
0
fallsea/fsLayuiPlugin

fsLayuiPlugin fsLayuiPlugin 是一个基于layui的快速开发插件,支持数据表格增删改查操作,提供通用的组件,通过配置html实现数据请求,减少前端js重复开发的工作。目前支持单数据表格、多数...

fallsea
2017/11/12
0
0
Layui 1.0.3 发布,经典模块化前端 UI 解决方案

Layui 1.0.3 发布了。 更新日志 集成 layer 3.0 重点增加导航菜单的二级菜单支持(水平导航和树形导航都支持) 表单select增加optgroup的分组支持 富文本编辑器新增获取选中内容的方法:lay...

贤心
2016/11/10
4.8K
20

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部