zoukankan      html  css  js  c++  java
  • layui的table在reload之后工具栏按钮失效的问题解决方案(转)

    https://www.yisu.com/zixun/254096.html

    layui的table在使用了toolbar工具栏后,刷新表格,工具栏的按钮会失效,原因是表格重新加载后,没有绑定工具栏按钮的触发事件,因此只需要在表格初始化完毕之后和刷新表格完毕后重新绑定一下所有按钮的绑定事件就可以了,这里把事件处理集合到了一个方法中,请参照bindTableToolbarFunction,具体代码如下:

    1. Html页面

    <section class="layui-fluid">
        <aside class="layui-card" id="queryDiv">
            <div class="layui-elem-quote">
                <form class="layui-form">
                        <div class="layui-inline">
                            <label>号码:</label>
                            <div class="layui-input-inline">
                                <input class="layui-input" id="phone" type="text">
                            </div>
                        <a class="layui-btn search_btn" data-type="reload">搜索</a>
                        </div>
                </form>
            </div>
        </aside>
    
        <article class="my-table">
            <table id="tableList" lay-filter="tableList"></table>
        </article>
    
        <script type="text/html" id="toolbarDemo">
            <div class="layui-btn-container" id="tableNav">
                <button type="button" class="layui-btn layui-btn-sm" id="add">新增用户</button>
                <button type="button" class="layui-btn layui-btn-sm layui-btn-danger" id="del">删除用户</button>
            </div>
        </script>
    </section >

    2. 对应的js

    layui.use(['form','layer','table'],function(){
        var form = layui.form,
            layer = parent.layer === undefined ? layui.layer : top.layer,
            table = layui.table;
    
        // 加载提示
        var loadingMsg = layer.msg('数据请求中', {icon: 16,scrollbar: false,time: 0});
        // 初始化表格及数据
        var tableIns = table.render({
            elem: '#tableList',
            url : 'sysUser/list',
            where :{
                phone : $("#phone").val()
            },
            cellMinWidth : 95,
            toolbar: "#toolbarDemo", //让工具栏左侧显示默认的内置模板
            defaultToolbar: ['filter'], // 工具栏右侧的图标按钮['filter', 'print', 'exports']
            even: true, // 开启斑马线效果
            page : true,
    //        height : "full-125",//放置在页面底部
            limits : myLimits,
            limit : myLimit,
            id : "tableListTable",
            cols : [[
                {field: 'userId', title: 'ID', 100, align:"center"},
                {field: 'userName', title: '用户名', minWidth:150, align:"center"},
                {field: 'state', title: '状态', 80, align:"center", templet: stateFormat},
                {field: 'sex', title: '性别', 80, align:"center", templet: sexFormat},
                {field: 'remark', title: '备注', align:"center"}
            ]],
            done: function(res, curr, count){
                // 关闭提示层
                layer.close(loadingMsg);
                // 绑定表格工具栏按钮的触发事件
                bindTableToolbarFunction();
            }
        });
    
        // ==================== 定义常规函数 ====================
        // 刷新表格数据
        function reloadTable(){
            // 加载提示
            loadingMsg = layer.msg('数据请求中', {icon: 16,scrollbar: false,time: 0});
            // 重新加载数据
            table.reload("tableListTable",{
                page: {
                    curr: 1 //重新从第 1 页开始
                },
                where: {
                    phone : $("#phone").val()
                },
                done: function(res, curr, count){
                    layer.close(loadingMsg);
                    bindTableToolbarFunction()
                }
            });
        }
    
        // 搜索【此功能需要后台配合,所以暂时没有动态效果演示】
        $(".search_btn").on("click",function(){
            // 刷新表格
            reloadTable();
        });
    
        // 格式化显示用户状态信息
        function stateFormat(d){
            var str;
            if (d.state == 0) {
                str = '<span class="fontColor_red">禁用</span>';
            } else if(d.state == 1) {
                str = '<span class="fontColor_green">正常</span>';
            } else {
                str = '<span class="fontColor_darkOrange">锁定</span>';
            }
            return str;
        }
    
        // 格式化显示sex信息
        function sexFormat(d){
            var str;
            if (d.sex == 0) {
                str = '女';
            } else if(d.sex == 1) {
                str = '男';
            } else {
                str = '<span class="fontColor_red">未知</span>';
            }
            return str;
        }
    
        // ==================== 定义事件处理 ====================
        // 绑定事件集合处理(表格加载完毕和表格刷新的时候调用)
        function bindTableToolbarFunction() {
            // 绑定新增用户事件
            $("#add").on("click", function() {
                layer.alert("新增用户被调用了", {icon: 6});
            });
    
            // 绑定删除用户事件
            $("#del").on("click", function() {
                layer.alert("删除用户被调用了", {icon: 6});
            });
        }
    })
  • 相关阅读:
    下一座“金矿”:移动医疗的契机和风险
    android ViewStub简单介绍
    IT人员必须掌握的10项软技能
    Android ListView item 点击事件失效问题的解决
    前端之Android入门(3):MVC模式(上)
    Android 错误提示: Can't create handler inside thread that has not called Looper.prepare()
    Android 性能优化提示
    Android 学习资源
    元素水平对齐
    div垂直居中
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/14345285.html
Copyright © 2011-2022 走看看