如何在勾选后禁用掉checkbox?

发布于 2022-09-07 19:28:24 字数 1055 浏览 15 评论 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一直取不到数据,但是还可以被勾选上,想请教一下是怎么做的。谢谢了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

殊姿 2022-09-14 19:28:24

通过进一步观察源码得知
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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文