• layui--记录


    layui

    行点击事件:点了没反应?

     //监听行工具事件
        layui.table.on('tool(demo)', function (obj) {
          //alert(222) 
        });
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    原因:检查下id与lay-filter是否一致;id与lay-filter必须一致。

     <table id="demo" lay-filter="demo"></table>
    
    • 1

    【layui】使用table编辑功能,滚动条位置固定不变,无感刷新

    使用table 单元格编辑功能时,每次里焦触发成功后手动调用了table.reload函数,导致滚动条初始化到顶部。

    1. 定义变量
       // 重载表格---保持滚动条位置
        let tableScroll = {
          scrollTob: 0,
          scrollLeft: 0,
        }; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 在table 的done函数中进行表格滚动
    	done: function (res, curr, count) { 
    	// 重载表格---保持滚动条位置
    	    $('.layui-table-body').scrollTop(tableScroll.scrollTob);
    	    $('.layui-table-body').scrollLeft(tableScroll.scrollLeft);
    	    tableScroll.scrollTob = 0;
    	    tableScroll.scrollLeft = 0; 
    	},
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 在表格编辑后,表格刷新前先记录滚动条位置
    	// 重载表格---保持滚动条位置
    	var scrollTop = ($('.layui-table-body') && $('.layui-table-body').length > 1) ? $('.layui-table-body')[0].scrollTop : $('.layui-table-body').scrollTop;
    	var scrollLeft = ($('.layui-table-body') && $('.layui-table-body').length > 1) ? $('.layui-table-body')[0].scrollLeft : $('.layui-table-body').scrollLeft;
    	tableScroll.scrollTob = scrollTop == 0 ? tableScroll.scrollTob : scrollTop;
    	tableScroll.scrollLeft = scrollLeft;
    	
    	layui.table.reload('test', { data: productList });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    
        // var tipsValComp;
        // // 1.找到触发的事件对象(绑定全局)  2.事件处理程序
        // $('body').on('mouseover', '.hoverPerDay', function () {
        //   var ovText = $(this).text();
        //   // var html = "

    " + ovText + "

    ";
    // var html = ` //
    //
    公司1公司1公司1公司1公司1公司1公司1公司1
    //
    //
    库存:
    //
    600 T
    //
    //
    //
    时间:
    //
    2023-08-17
    //
    //
    //
    状态:
    //
    正常
    //
    //
    `;
    // // layer.tips('默认向右', this); // tipsValComp = layer.tips(html, this, { tips: [3, '#fff', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 }); // }); // //鼠标移出 // $('body').on('mouseout', '.hoverPerDay', function () { // layer.close(tipsValComp); // }); // var tipsValPerDay; // // 1.找到触发的事件对象(绑定全局) 2.事件处理程序 // $('body').on('mouseover', '.hoverPerComp', function () { // var ovText = $(this).text(); // // var html = "

    " + ovText + "

    ";
    // var html = ` //
    //
    公司1公司1公司1公司1公司1公司1公司1公司1
    //
    //
    库存容量:
    //
    600 T
    //
    //
    //
    库存上限:
    //
    600 T
    //
    //
    //
    库存下限:
    //
    600 T
    //
    //
    //
    平均每日消耗(估):
    //
    600 T
    //
    //
    `;
    // // layer.tips('默认向右', this); // tipsValPerDay = layer.tips(html, this, { tips: [3, '#fff', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 }); // }); // //鼠标移出 // $('body').on('mouseout', '.hoverPerComp', function () { // layer.close(tipsValPerDay); // });
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    问题:在时间筛选的时候遇到了难题,表格重载后,表头没有按照重载方法传入的cols参数展示,而是还是展示原先的表头

    原因:经过一番排查后发现原因,layui中 table.reload(ID, options) 在接收options中的参数中,如果参数是数组形式,那并不会完全替换历史参数,而是覆盖到对应长度。如果之前传入参数是[1,2,3,4],重载传入参数是[a,b.c],那后台获取到的参数是[a,b,c,4],这就是为什么我在筛选日期为2月后,表头还是展示到30天(新传入的表头29项,和之前的30项合并后,任然是30项)这个问题是真的坑啊

    解决:这个问题解决起来并不复杂,而是复杂在了发现问题的原因,实际解决只需要一行关键代码就好,在table的render方法的回调函数中,将cols字段初始化就可以了: this.cols = [ ];

     done:function (res,curr,count) {
            this.cols = []; //(关键代码)将cols初始化,否则表格重载时无法正确重新渲染表头
        }
    
    • 1
    • 2
    • 3
     table.reload('test', {
                cols: [cols],
                where: {
                  "data": encodeURI(JSON.stringify(data.field).replaceAll("\"", "\\\""))
                },
                page: {
                  curr: 1
                }
              });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="utf-8">
      <title>客户库存</title>
      <meta name="renderer" content="webkit">
      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
      <meta name="viewport"
        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
      <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
      <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
      <link rel="stylesheet" href="../../open.css" media="all">
      <style>
        .layui-table td,
        .layui-table th {
          font-size: 12px !important;
        }
    
        .layui-table-cell {
          height: 28px;
          line-height: 28px;
          padding: 0px !important;
        }
    
        .layui-table-view .layui-table td,
        .layui-table-view .layui-table th {
          padding: 0 !important;
        }
    
        .layui-layer-content {
          width: fit-content !important;
        }
      </style>
    </head>
    
    <body>
    
      <div class="layui-fluid">
        <div class="layui-row layui-col-space15">
          <div class="layui-col-md12">
            <div class="layui-card" style="">
              <div class="layui-card-body">
                <form class="layui-form layui-form-pane" action="">
                  <div class="layui-form-item">
                    <div class="layui-inline">
                      <label class="layui-form-label">客户</label>
                      <div class="layui-input-inline">
                        <input type="text" id="supplyName" name="supplyName" autocomplete="off" class="layui-input"
                          placeholder="请输入客户">
                        <input type="text" id="supply" name="supply" style="display:none;">
                      </div>
                    </div>
                    <div class="layui-inline">
                      <label class="layui-form-label">月份</label>
                      <div class="layui-input-inline">
                        <input type="text" id="currMonth" name="currMonth" autocomplete="off" class="layui-input"
                          placeholder="选择月份">
                      </div>
                    </div>
                    <div class="layui-inline">
                      <button type="button" class="layui-btn layui-btn layui-btn-normal" lay-submit lay-filter="search">
                        <i class="layui-icon">&#xe615;</i>搜索
                      </button>
                      <button type="reset" class="layui-btn layui-btn layui-btn-danger">
                        <i class="layui-icon">&#xe669;</i>重置
                      </button>
                    </div>
                    <!-- 图例 -->
                    <div class="lenged_box">
                      <div class="lenged_item">
                        <div class="lenged_up"></div>
                        <div>超过上限</div>
                      </div>
                      <div class="lenged_item">
                        <div class="lenged_down"></div>
                        <div>超过下限</div>
                      </div>
                      <div class="lenged_item">
                        <div class="lenged_today"></div>
                        <div>今日时间</div>
                      </div>
                      <div class="lenged_item">
                        <div class="lenged_prev"></div>
                        <div>预测时间</div>
                      </div>
                    </div>
                  </div>
                </form>
                <div class="layui-row" style="">
                  <table class="layui-hide" id="test" lay-filter="test"></table>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    
      <script src="../../../layuiadmin/layui/layui.all.js"></script>
      <script src="../../utils.js"></script>
      <script type="text/javascript">
        // 设置卡片高度
        $('.layui-card-body').css('height', $(window).height() - 32);
        //执行一个laydate实例
        layui.laydate.render({
          elem: '#currMonth',
          type: 'month',
        });
        // 获取表头 
        // var d = {
        //   fn: "customerAction",
        //   md: "selectCustomerInvTitleList"
        // }
        // httpRequestPost("/MngServlet", d, function (res) {
        //   console.log(res);
        //   if (res.rt == 0) {
        //     var cols = res.data;
        //     // 获取data
        //     layui.table.render({
        //       id: 'test',
        //       elem: '#test',
        //       title: '入库计划单',
        //       height: 'full-80',
        //       url: contextPath + '/MngServlet',
        //       method: 'post',
        //       where: {
        //         fn: "customerAction",
        //         md: "selectCustomerInvList"
        //       },
        //       contentType: 'application/json',
        //       parseData: function (res) { //res 即为原始返回的数据
        //         return {
        //           "code": res.rt, //解析接口状态
        //           "data": res.data, //解析数据列表
        //           "count": res.count,
        //           "msg": res.msg
        //         };
        //       },
        //       cols: cols,
        //       done: function (res, curr, count, origin) {
        //         // 获取所有表头
        //         var totalArr = $('.layui-table-header th');
        //         var today = 999;//今日日期
        //         totalArr.each(function (index, item) {
        //           var currTh = $(this).attr('data-field').split('num')[1];//获取表头的data-field:num28
        //           const date = new Date().getDate();//
        //           if (Number(currTh) === Number(date)) {
        //             // 相等就是今日
        //             today = index;//赋值今日
        //             $(this).css({ 'background': '#1e9fff', 'color': '#fff', })
        //           } else if (index > today) {
        //             // 大于今日就是未来
        //             $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' })
        //           }
        //         });
        //       }
    
        //     });
    
        //   }
        // })
        // // td上下限颜色
        // function tdColor (title, up, lower, num, d) {
        //   if (title >= up) {
        //     return `
    ${title}
    `
    // } // if (title <= lower) { // return `
    ${title}
    `
    // } // return `
    ${title}
    `
    // } // // td公司 // function tdComp (d) { // return `
    ${d.customerName}
    `
    // } function checkDate (params) { if (params < 10) { params = "0" + params; } else { params = params + ""; } return params } let daysList = []; let cols = []; let queryYear = new Date().getFullYear(); //默认获取当前年;//需要查询的年份 let queryMonth = checkDate(new Date().getMonth() + 1); //默认获取当前月;//需要查询的月份 getCurrMonthDays(queryYear, queryMonth); //自动显示本月日期 function getCurrMonthDays (year, month) { daysList = []; cols = []; //获取当前月有多少天 let day = new Date(year, month, 0).getDate(); let current_month_days = []; for (let i = 0; i < day; i++) { let d = i + 1; if (d < 10) { current_month_days[i] = parseInt("0" + d); } else { current_month_days[i] = d; } } // console.log("月份测试", current_month_days); daysList = current_month_days; for (let a = 0; a < daysList.length; a++) { cols.push({ title: `${daysList[a]} `, width: "50", align: "center", field: `num${daysList[a]}`, // templet: `
    {{tdColor(d.num${daysList[a]}, d.invUp, d.invLow,${daysList[a]}, d)}
    `,
    templet: function (d) { var s = 'num' + daysList[a]; var title = d[s];//当前单元格的数值 if (d.title >= d.invUp) { return `
    ${d.customerId}${daysList[a]}" οnmοuseοver="showPerDay(${title}, ${d.invUp}, ${d.invLow},${daysList[a]},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffcdce;color:#ff3839"> ${title}
    `
    } if (d.title <= d.invLow) { return `
    ${d.customerId}${daysList[a]}" οnmοuseοver="showPerDay(${title},${d.invUp}, ${d.invLow},${daysList[a]},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffecc6;color:#ff9202"> ${title}
    `
    } return `
    ${d.customerId}${daysList[a]}" οnmοuseοver="showPerDay(${title}, ${d.invUp}, ${d.invLow},${daysList[a]},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();"> ${title}
    `
    }, }) } cols.unshift( { title: "序号", type: "numbers", width: "40" }, { field: "customerName", title: '客户名称', width: "90", event: "openCompCharts", templet: "
    {{tdComp(d)}}
    "
    , templet: function (d) { return `
    ${d.customerId}" οnmοuseοver="showComp('${d.customerName}',${d.customerId},${d.invLimit}, ${d.invUp}, ${d.invLow},${d.invDaily});" οnmοuseleave="closeTipsComp();">
    ${d.customerName}
    `
    } } ); }; // hoverPerDay var tipsPerDay; function showPerDay (title, up, lower, num, customerId, customerName) { // console.log(title, up, lower, num, customerId, customerName); // console.log('显示的信息'); var currYM = new Date().toLocaleDateString().split('/')[0] + '-' + new Date().toLocaleDateString().split('/')[1] + '-';//'2023/8/2' var html = `
    ${customerName}
    库存:
    ${title} T
    时间:
    ${currYM}${num}
    状态:
    ${title >= up ? 'color:#ff3839' : (title <= lower ? 'color:#ff9202' : '')}">${title >= up ? '超过上限' : (title <= lower ? '小于下限' : '正常')}
    `
    ; // tipsPerDay = layer.tips('默认向右', this); var node = `#tdPerDay${customerId}${num} `; // console.log($(`#tdPerDay${ title }${ num } `)); tipsPerDay = layer.tips(html, node, { tips: [3, '#fff', 'width: fit-content;', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });// } function closeTipsPerDay () {//关闭显示的信息 // console.log('关闭显示的信息'); layer.close(tipsPerDay); } // hoverPerComp var tipsPerComp; function showComp (customerName, customerId, invLimit, invUp, invLow, invDaily) { // console.log(customerName, customerId, invLimit, invUp, invLow, invDaily); // console.log('显示的信息'); var currYM = new Date().toLocaleDateString().split('/')[0] + '-' + new Date().toLocaleDateString().split('/')[1] + '-';//'2023/8/2' var html = `
    ${customerName}
    库存容量:
    ${invLimit} T
    库存上限:
    ${invUp} T
    库存下限:
    ${invLow} T
    每日平均消耗(估):
    ${invDaily} T
    `
    ; // tipsPerComp = layer.tips('默认向右', this); var node = `#tdPerDay${customerId} `; // console.log($(`#tdPerDay${ title }${ num }`)); tipsPerComp = layer.tips(html, node, { tips: [3, '#fff', 'width: fit-content;', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });// } function closeTipsComp () {//关闭显示的信息 // console.log('关闭显示的信息'); layer.close(tipsPerComp); } layui.use( ['table', 'form'], function () { var table = layui.table; var form = layui.form; form.on('submit(search)', function (data) { // console.log($('#currMonth').val());//2023-02 // 重新获取表头 queryYear = $('#currMonth').val().split('-')[0]; //默认获取当前年;//需要查询的年份 queryMonth = $('#currMonth').val().split('-')[1]; //默认获取当前月;//需要查询的月份 getCurrMonthDays(queryYear, queryMonth); // console.log(cols, daysList); table.reload('test', { cols: [cols], where: { "data": encodeURI(JSON.stringify(data.field).replaceAll("\"", "\\\"")) }, page: { curr: 1 } }); return false; }); // 获取data layui.table.render({ id: 'test', elem: '#test', title: '入库计划单', height: 'full-80', url: contextPath + '/MngServlet', method: 'post', where: { fn: "customerAction", md: "selectCustomerInvList" }, contentType: 'application/json', parseData: function (res) { //res 即为原始返回的数据 return { "code": res.rt, //解析接口状态 "data": res.data, //解析数据列表 "count": res.count, "msg": res.msg }; }, cols: [cols], done: function (res, curr, count, origin) { this.cols = []; //(关键代码)将cols初始化,否则表格重载时无法正确重新渲染表头 // 获取所有表头 var totalArr = $('.layui-table-header th'); var today = 999;//今日日期 totalArr.each(function (index, item) { // console.log(queryYear, queryMonth);//2023 '08' if ((index === 0) || (index === 1)) { return } var currTh = $(this).attr('data-field').split('num')[1];//获取表头的data-field:num28 const date = new Date().getDate();//--今日日期:2 // var fullDate = new Date().toLocaleDateString();//'2023/8/2' var currYY = new Date().getFullYear(); //默认获取当前年;//需要查询的年份 var currMM = checkDate(new Date().getMonth() + 1); //默认获取当前月;//需要查询的月份 // 1:比较年 if (Number(queryYear) > Number(currYY)) { //如果 未来--全部用绿色 $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' }) } else if (Number(queryYear) < Number(currYY)) { //如果 过去--全部用默认 $(this).css({ 'background': '#f2f2f2', 'color': '#666', }) } else if (Number(queryYear) == Number(currYY)) { // 2:比较月 if (Number(queryMonth) > Number(currMM)) { //如果 未来--全部用绿色 $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' }) } else if (Number(queryMonth) < Number(currMM)) { //如果 过去--全部用默认 $(this).css({ 'background': '#f2f2f2', 'color': '#666', }) } else if (Number(queryMonth) == Number(currMM)) { // 3:比较日 if (Number(currTh) === Number(date)) { // 相等就是今日 today = index;//赋值今日 $(this).css({ 'background': '#1e9fff', 'color': '#fff', }) } else if (index > today) { // 大于今日就是未来 $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' }) } else { $(this).css({ 'background': '#f2f2f2', 'color': '#666', }) } } } }); } }); //监听单元格事件 table.on('tool(test)', function (obj) { var data = obj.data; // console.log(data); if (obj.event === 'openCompCharts') { layer.open({ title: data.customerName, type: 2, area: ['60%', '80%'], content: './customerCharts.html?customerId=' + data.customerId }); } }); $(document).on("click", "div[lay-id='test'] .layui-table-body table.layui-table tbody tr", function () { //获取行下标 var index = parseInt($(this).parents('tr').prevObject.context.dataset.index); //获取到表对象 $(".layui-table-body tr ").attr({ "style": "background:#FFFFFF" });//其他tr恢复原样 $(".layui-table-body tr[data-index=" + index + "]").attr({ "style": "background:#dcdcdc" });//改变当前tr颜色 }) //点击复选框取消冒泡(这里默认复选框在table第一列)(只要点在复选框外就会触发行选,取消其他的复选框) $(document).on("click", "tr td:first-child", function (e) { e.stopPropagation(); }); }); </script> </body> </html>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364
    • 365
    • 366
    • 367
    • 368
    • 369
    • 370
    • 371
    • 372
    • 373
    • 374
    • 375
    • 376
    • 377
    • 378
    • 379
    • 380
    • 381
    • 382
    • 383
    • 384
    • 385
    • 386
    • 387
    • 388
    • 389
    • 390
    • 391
    • 392
    • 393
    • 394
    • 395
    • 396
    • 397
    • 398
    • 399
    • 400
    • 401
    • 402
    • 403
    • 404
    • 405
    • 406
    • 407
    • 408
    • 409
    • 410
    • 411
    • 412
    • 413
    • 414
    • 415
    • 416
    • 417
    • 418
    • 419
    • 420
    • 421
    • 422
    • 423
    • 424
    • 425
    • 426
    • 427
    • 428
    • 429
    • 430
    • 431
    • 432
    • 433
    • 434
    • 435
    • 436
    • 437
    • 438
    • 439
    • 440
    • 441
    • 442
    • 443
    • 444
    • 445
    • 446
    • 447
    • 448
    • 449
    • 450
    • 451
    • 452
    • 453
    • 454
    • 455
    • 456
    • 457
    • 458
    • 459
    • 460
    • 461
    • 462
    • 463
    • 464

    日期控件:限制可选日期(月份):最多到下月

    在这里插入图片描述

        // 默认当月
        $("#currMonth").val(layui.util.toDateString(get_today(), 'yyyy-MM'));
    
        // 设置最大可选月份
        function maxMonth () {
          var year = new Date().getFullYear();   //默认获取当前年;//需要查询的年份
          var month = new Date().getMonth() + 1;   //默认获取当前年;//需要查询的年份
          //获取当前月有多少天
          var day = new Date(year, month, 0).getDate();
          if (month == 12) {
            year = year + 1;
            month = 0;
          }
          // console.log(year + '-' + checkDate(month + 1) + '-' + day);
          return year + '-' + checkDate(month + 1) + '-' + day;
        }
    
        //执行一个laydate实例
        layui.laydate.render({
          elem: '#currMonth',
          type: 'month',
          max: maxMonth(),
          showBottom: false,
          change: function (value) {
            timeNoConfirm('currMonth', value);
            //TODO
          }
        });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    layui如何获取整个表格的数据

    在实际操作中,有时候某些操作需要修改表格中的值,需要先获取表格数据再去修改,这时候如果能做直接拿到下标去修改是最好的,但是 往往拿到的值是id之类的,而且表格是分页的,获取数据的方法layui.table.cache['test']只能获取到当前页的数据,这时候怎么办呢?

    解决办法:

    先用最大的数据limit去table.reload,让所有的数据在同一页展示,并获取当前页的所有数据(此时获取的数据就是所有分页的数据)。然后进行你的操作之后,再执行一次重载(此时使用正常的分页数量)。

    这样虽然在后台逻辑上看是重载了两次,但是在使用者的角度去看是看不出来的,他只能看到最后一次重载的结果。

    // var cacheTablist =  table.cache['test'] ;//这种方法---只能获取到当前页面的数据
    
     // 要获取全部的数据---用以下方法(先用最大的数据limit去table.reload,让所有的数据在同一页展示,并获取当前页的所有数据(此时获取的数据就是所有分页的数据))
     var page = $(".layui-laypage-skip").find("input").val(); //获取当前页码
    
     layui.table.reload('test', { 
    	 page: { 
    		 limit: Number.MAX_VALUE,
    		 curr: 1 
    	  } 
      });
     var cacheTablist = layui.table.cache['test'];//这时候再获取的话就是全部的数据了(因为已经变成一页了)
     
    //TODO(修改表格的值之类的)
     for (let i = 0; i < cacheTablist.length; i++) {
    	 if (cacheTablist[i].id== id) {
    	 	cacheTablist[i].supplierId = Number(value); //更新被修改的行数据 
    	  }
      }
      productList = JSON.parse(JSON.stringify(cacheTablist));
    
     /* 第二次重载是为了----重新分页*/
      layui.table.reload('test', { 
    	  page: { limit: 20, curr: page }, 
    	  data: productList 
      });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    原文链接:https://blog.csdn.net/qq_37050372/article/details/111380012

  • 相关阅读:
    float32转float16
    PyG 使用过程中出现的一些小bug。GAE 的negative_sampling中
    upload-labs1-17思路
    生信工作流框架搭建 | 02-nextflow 实战
    Global Mapper 导出图层功能的妙用(重采样、设置文件类型、切片、按掩膜提取or裁剪……)
    【数据分享】上海市出租车GPS数据
    点击弹出实现模拟百度那样子
    测试平台系列(98) 完善后置条件功能
    【Powershell 】(Windows下)常用命令 | 命令别名 | 运行Windows命令行工具 | 运行用户程序(vim、gcc、gdb)
    Rust免杀 Shellcode加载与混淆2
  • 原文地址:https://blog.csdn.net/m0_55546349/article/details/131937727