0

需求需要在勾选checkbox后禁用掉checkbox

数据量较小用的是客户端分页,扩展了一下checkBy方法,代码大致如下

相关代码

BootstrapTable.prototype.newCheckBy = function (obj) {
    var checked = true;
    if (!obj.hasOwnProperty('field') || !obj.hasOwnProperty('values')) {
        return;
    }

    var that = this,
        rows = [];
    $.each(this.options.data, function (index, row) {
        if (!row.hasOwnProperty(obj.field)) {
            return false;
        }
        if ($.inArray(row[obj.field], obj.values) !== -1) {
            var $el = that.$selectItem.filter(':enabled')
                .filter(sprintf('[data-index="%s"]', index)).prop('checked', checked).prop('disabled', 'disabled');
            row[that.header.stateField] = checked;
            rows.push(row);
            that.trigger(checked ? 'check' : 'uncheck', row, $el);
        }
    });
    this.updateSelected();
    this.trigger(checked ? 'check-some' : 'uncheck-some', rows);

第一页的数据可以正常禁用 第二页被勾选的数据无法禁用 但是还是被勾选上了,因为数据在第二页所以$el一直取不到数据,但是还可以被勾选上,想请教一下是怎么做的。谢谢了

1个回答

0

已采纳

通过进一步观察源码得知
row[that.header.stateField] = {checked: checked, disabled: checked};
即可disable掉
但是又发现了一个问题,在切换页面disabled掉checkbox后,在initRow方法中

item[that.header.stateField] = value === true || (!!value_ || value && value.checked);

这行代码总会将checkbox的值改为bool类型,无法再继续判断value.disable

撰写答案