选择行时启用自定义按钮(默认禁用)

Posted

技术标签:

【中文标题】选择行时启用自定义按钮(默认禁用)【英文标题】:Enabling custom button (disabled by default) when row is selected 【发布时间】:2016-07-31 06:01:52 【问题描述】:

我有一个显示分支数据的数据表,其中定义了两个自定义按钮:添加和更新。它们在 javascript 部分的顶部初始化

var buttons;
var tblBranch;

$.fn.dataTable.ext.buttons.add = 
            className: 'button-add',
            text: "Add Branch",
            action: function (dt) 
                onBtnAddClicked()
            
        ;

$.fn.dataTable.ext.buttons.update = 
            className: 'button-update',
            text: "Update",
            action: function (dt) 
                onBtnUpdateClicked()
            
        ;

我想在页面加载时禁用“编辑”按钮,并且仅在选择了一行时才启用它。问题是,我正在使用自定义按钮,但我在 datatables.net 上找不到任何关于如何根据条件启用/禁用它们的信息。到目前为止,我尝试过的是:

tblBranch = $("#tblBranches").DataTable(
        dom: 'Blfrtip',
        buttons: 
            buttons :[
                'add', 'update'
            ]
        
        select: true;
)

$("#tblBranches tbody").on('click', 'tr', function () 
        if (tblBranch.row(this).hasClass('selected')) 
             $('button-update').removeClass("DTTT_disabled");
        
        else 
             table.$('tr.selected').removeClass('selected');
             $('button-update').addClass("DTTT_disabled");
        
);

但我不知道在页面加载时禁用“编辑”按钮的代码应该是什么样的,我看过here、here、here 和here。

感谢您的指导。

【问题讨论】:

【参考方案1】:

您所指的最后一个链接包含您正在寻找的解决方案。但是文档有点模糊,猜想它需要一个可靠的例子。目前尚不清楚如何创建按钮(显示两种方法),但下面是一个内联示例,它也可以与构造函数一起使用。只需给按钮一个类,比如.edit,然后从一开始就将其设置为禁用:

var table = $('#example').DataTable( 
  dom: 'Bfrtip',
  select: true,
  buttons: [
    
      text: 'Edit',
      className: 'edit',
      enabled: false,
      action: function (e, dt, node, config) 
        //do something
      
    ,
    
      text: 'Add',
      action: function (e, dt, node, config) 
        //do something
      
    
  ]
)

然后使用Select插件selectdeselect事件来更新enabled.edit按钮的状态:

$('#example').on('select.dt deselect.dt', function() 
  table.buttons( ['.edit'] ).enable(
    table.rows(  selected: true  ).indexes().length === 0 ? false : true
  )
)

演示 -> https://jsfiddle.net/pmee6w2L/

【讨论】:

以上是关于选择行时启用自定义按钮(默认禁用)的主要内容,如果未能解决你的问题,请参考以下文章

启用/禁用表单提交按钮不起作用

选择自定义选择器视图中的第一行时如何禁用按钮?

如果条件满足要求,JS启用禁用按钮

添加到自定义部分标题视图的按钮在删除行时消失

iphone中自定义单选按钮的默认选择

如何禁用自定义单元格中的按钮?