解决bootstrapTable动态添加的一行不会被$(“#bootstrap-table“).bootstrapTable(‘getSelections‘)获取到

文章讲述了在BootstrapTable中,通过监听行的选中和取消选中事件,动态控制添加按钮的状态。当有一行被选中时,按钮变为可点击,多行或无选中时则禁用。实现过程中使用了JavaScript的数组操作和事件处理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景
业务需要bootstrapTable表格选中某一行数据,并将按钮表示为可点击状态,当选中多行或没选中数据时设置为不可点击状态。
解决
<a class="btn btn-success" id="btn-insert-row" onclick="insertRow()"><i class="fa fa-plus"></i> 所选行下方添加</a>

$("#btn-insert-row").attr('disabled', 'disabled');
var selectAllIds = []; // 选中行id集合

// 点击checkbox事件监听
$('#bootstrap-table').on('uncheck.bs.table check.bs.table check-all.bs.table uncheck-all.bs.table',function(e,rows) {
            var datas = $.isArray(rows) ? rows : [rows];// 点击时获取选中的行或取消选中的行
            examine(e.type, datas);
        })
//caseSort为row{}中自定义的键
function examine(type,datas){
            if(type.indexOf('uncheck')===-1){
               $.each(datas,function(i,v){
                console.log("type.indexOf('uncheck')===-1 "+ JSON.stringify(v));
                console.log("type.indexOf('uncheck')===-1 "+ v.caseSort);
                // 添加时,判断一行或多行的caseSort是否已经在数组里 不存则添加 
                selectAllIds.indexOf(parseInt(v.caseSort)) === -1 ? selectAllIds.push(parseInt(v.caseSort)) : -1;
               });
            }else{
               $.each(datas,function(i,v){
                   console.log(v);
                   selectAllIds.splice(selectAllIds.indexOf(parseInt(v.caseSort)),1); //删除取消选中行
               });
            }
            //console.log(selectAllIds);
            if(selectAllIds.length == 1) {
                $("#btn-insert-row").removeAttr("disabled");
            }else{
                $("#btn-insert-row").attr('disabled', 'disabled');
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值