给Layui表格全选按钮添加点击事件并获取数据进行回填计算

Layui表格的全选按钮只是改了下其他表格li的样式而已,所以你想通过获取选中行进行回填数据并计算时,你就会发现表头这个全选按钮是获取不到选中行的,所以它就不会再进行计算,所以我就帮它重新写了一个点击事件,让它全选时获取当前页面的全部数据,不全选时获取到选择行的数据进行判断。

tabTitles = layuiTable.render({
     elem: '#tabTitles',
     url: '/DayWorkManagement/FormerSell/selectTitlesInfor',
     where: { CommID: "", Discount: 0, VipID: 0 },
     cols: [[
     { type:, title: '表头', rowspan: 2, unresize: true, width: 50},
     ]],
     //数据渲染完的回调
     done: function (res) {
		 var SPhaschecked;
         SPcache = res.data;//获取到商品表页面的所有数据

//我在这个按钮外层的div加了点击事件在表格的回调里,这样可以让它点击后获取的表格页面上的全部数据。
 		$("[lay-id='tabTitles']").find("[data-field='1']")
.find("div").eq(0).click(function (data) {

//它加个条件判断这个全选按钮是否勾上,勾上就获取全部的数据,不勾就获取到表格勾上的选中行,看到这里你肯定很想吐槽了,之前不是说过这个全选按钮获取不到选中行吗,是这样的,它的确获取不了,但是全选按钮没勾上表格行有勾上是有一个前提的,你起码要把某一行勾上或者去掉才会出现这个情况吧,当你去勾或勾上时不就可以获取到选中行了吗,所以懂我意思了吧(๑•̀ㅂ•́)و✧
            SPhaschecked = $("[lay-id='tabTitles']").find("[data-field='1']")
.eq(0).find("div").eq(1).hasClass("layui-form-checked");//选中的条件

			var checkStatus = layuiTable.checkStatus("tabTitles");//获取选中行
var IsAll = checkStatus.isAll;//全选 
             var shoujia = 0; //进入循环前让它的数据都为0
             var yuanjia = 0;
             var shuliang = 0; 
//这个点击事件是i标签外层的div(其实是给不了i的点击事件),所以点击i标签的外层就会有个bug,bug的原因是点击这个全选按钮有三种情况:第一种是全选按钮勾上时,第二种时全选按钮没勾上但表格有勾选的数据时,第三种时全选按钮没勾上且表格没有勾选的数据时,所以我加了下面三个判断给它:
            //全选按钮勾上
            if (SPhaschecked == true) {
                //console.log(SPhaschecked);
                for (var i = 0; i < SPcache.length; i++) {
                    shuliang += parseInt(SPcache[i].buynumber);
                    yuanjia += SPcache[i].MarMenyer * SPcache[i].buynumber;
                    shoujia += SPcache[i].MarketMeny * SPcache[i].buynumber;
                    $("#shoujia").val("售价:" + shoujia);
                    $("#yuanjiashuliang").val("数量:" + shuliang + " / " + "原价:" + yuanjia);
                 }
             }
             //全选按钮没勾上且表格没有选中行
             if (SPhaschecked == false && IsAll == true) {
                 $("#shoujia").val("售价:" + shoujia);
                 $("#yuanjiashuliang").val("数量:" + shuliang + " / " + "原价:" + yuanjia);
             }
             //全选按钮没勾上但表格有选中行
             if (SPhaschecked == false && IsAll == false) {
                  
                 for (var i = 0; i < checkStatus.data.length; i++) {
                     shuliang += parseInt(checkStatus.data[i].buynumber);
                     yuanjia += checkStatus.data[i].MarMenyer * checkStatus.data[i].buynumber;
                     shoujia += checkStatus.data[i].MarketMeny * checkStatus.data[i].buynumber;
                     $("#shoujia").val("售价:" + shoujia);
                     $("#yuanjiashuliang").val("数量:" + shuliang + " / " + "原价:" + yuanjia);
                 }
             } 
        })
    },
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值