如何在勾选后禁用掉checkbox?
需求需要在勾选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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过进一步观察源码得知
row[that.header.stateField] = {checked: checked, disabled: checked};
即可disable掉
但是又发现了一个问题,在切换页面disabled掉checkbox后,在initRow方法中
这行代码总会将checkbox的值改为bool类型,无法再继续判断value.disable