layui的table在reload之后工具栏按钮失效的问题解决方案

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‘, width:100, align:"center"},
            {field: ‘userName‘, title: ‘用户名‘, minWidth:150, align:"center"},
            {field: ‘state‘, title: ‘状态‘, width:80, align:"center", templet: stateFormat},
            {field: ‘sex‘, title: ‘性别‘, width: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});
        });
    }
})

原文地址:https://blog.51cto.com/1197822/2472692

时间: 2024-08-30 07:33:44

layui的table在reload之后工具栏按钮失效的问题解决方案的相关文章

layui使用table.reload()后保持滚动条

使用table时有个特殊需要,改变table中的某一项时,再table展示内容较多需要滚动条时,由于后台需要运算结果,所以必须要table.reload加载数据,但是滚动条会被重置到0的位置. 网上有推荐的方法,实测后发现缺少一句代码,导致无法改动滚动条位置. 1 var $ = layui.$, 2 table = layui.table; 3 4 //在你需要重置表格的前面加上代码 5 6 var scrollTop=0; 7 var layuiTable = $('.layui-table

layui教程---table

layui.config({ base: "${ctx}/static/js/" }).use(['form', 'layer', 'jquery', 'common','element', 'table', 'laytpl'], function () { $ = layui.$; var $ = layui.$, form = layui.form, common = layui.common, laydate = layui.laydate, element = layui.el

layui的table使用

不多bb,直接上代码 html的代码: <link rel="stylesheet" href="../../static/layui/css/layui.css"> <script src="../../static/layui/layui.js"></script> <script src="../../static/js/jquery.js"></script>

Android 学习笔记四:创建工具栏按钮

原文:http://blog.csdn.net/lihongxun945/article/details/48951199 前面我们已经可以在一个Activity中添加一些按钮之类的组件.由于手机的屏幕很小,所以很多时候我们会需要用到工具栏,通过下拉菜单之类的方式来节省空间. Android 提供了对工具栏按钮的强大支持. 增加一个工具栏按钮 我们现在给 MainActivity 增加一个搜索按钮.增加一个按钮需要做这三件事 一,在 res/menu/activity_main.xml 中增加一

iOS: 工具栏控件UIToolBar和工具栏按钮控件UIBarButtonItem的使用

一.工具栏控件:UIToolBar:UIView 介绍: ToolBar工具栏是视图View的属性,可以在工具栏上添加工具栏按钮Bar Button Item(可以是自定义的Custom.也可以是系统自带的BarButtonSystemItem ),视图控制器可以通过工具栏项对视图中内容进行操作. 注意事项: 在导航栏控制器中会有一个UIToolBar实例,但默认是隐藏的,如果需要显示,需要通过这个方法将其打开: 在这里需要注意的是,与UINavigationBar类似,导航控制器拥有且只拥有一

VC 对话框程序添加工具栏按钮图标及其按钮tooltip

注意:本人使用VC++2010开发环境进行测试. 在使用VC开发对话框程序时不像开发单文档程序和多文档程序那么方便,很多资源都需要自己手动添加.最近在开发一个程序时,想尝试在对话框程序里面添加 工具栏 及其 按钮tooltip,于是便有了这篇文章,希望把经验总结下来以方便自己以后查询以及各位同仁查询! 一.首先建立一个对话框程序 1.添加工具栏资源,并在工具栏资源里添加几个按钮,并将按钮的width 和 height 改为24,也可以根据自己的需要更改尺寸,同时,还要为相应的按钮设置一个ID.具

在插件式应用程序中,实现对菜单,工具栏按钮的 完全解耦及状态控制

之前承诺会对 Winform IDE,WPF 客服程序的开发进行进一步的分解记录,很抱歉一直没有太多时间认真梳理. 本篇博客抽取了这两个应用程序的一个共通功能的实现方法进行说明,即在插件式应用程序中,对菜单及工具栏的控制. 对于复杂的应用程序开发,我们可能会将程序的功能进行分解,模块化,插件化:那么如何在应用程序的宿主中,向插件提供统一的菜单,工具栏注册,更新,销毁机制呢?以及如何做到UI无关的彻底解耦合? 看两个例子: 基于 Winform 的插件式应用程序: http://www.cnblo

防止页面后退(使浏览器后退按钮失效)

防止页面后退(使浏览器后退按钮失效) 原理:用新页面的URL替换当前的历史纪录,这样浏览历史记录中就只有一个页面,后退按钮永远失效. 注:history.go和history.back(包括用户按浏览器历史前进后退按钮)触发, 页面由于使用pushState修改了history),会触发popstate事件.     [代码如下]       注:直接放在不想后退跳转的页面即可! 方法一:       <script type="text/javascript">     

解决eWebEditor老版本在IE新版本下按钮失效问题一劳永逸的办法

单位里有一套新闻发布系统,是很早以前的了,一直在用,eWebEditor是什么版本的也搞不清了,但肯定是老版本. 前一段时间也出了问题,在IE8上按钮失效,经过百度之后,解决方案几乎全都一样,都是五花八门的判断IE版本然后执行对应的匿名方法. 出问题的是editor.js中的这句:if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()"); 而解决方案,无一例外的都是两种 1. 1 if(navigator.