有没有办法通过特定事件启用/禁用对数据表的搜索?

Posted

技术标签:

【中文标题】有没有办法通过特定事件启用/禁用对数据表的搜索?【英文标题】:Is there a way to enable/disable searching on a datatable by an specific event? 【发布时间】:2018-08-04 18:37:43 【问题描述】:

我正在尝试在选择特定单选按钮时禁用数据表上的搜索字段。

我正在使用 icheck 插件

我正在考虑甚至使用模糊或这个 我的html

<div class="box-tools pull-right">
    <label for="rbn_buscar_codigo">
        <input type="radio" name="buscar_por" class="flat-red" id="rbn_buscar_codigo">
        <strong>Código</strong>
    </label>
    <label for="rbn_buscar_linea">
        <input type="radio" name="buscar_por" class="flat-red" id="rbn_buscar_linea">
        <strong>Línea</strong>
    </label>
    <label for="rbn_buscar_seccion">
        <input type="radio" name="buscar_por" class="flat-red" id="rbn_buscar_seccion">
        <strong>Sección</strong>
    </label>
    <label for="rbn_buscar_descripcion">
        <input type="radio" name="buscar_por" class="flat-red" id="rbn_buscar_descripcion">
        <strong>Descripción</strong>
    </label>
    <label for="rbn_buscar_todos">
        <input type="radio" name="buscar_por" class="flat-red" id="rbn_buscar_todos">
        <strong>Todos</strong>
    </label>
</div>

我的 Js

$('#rbn_buscar_codigo').on('ifChecked', function (event) 
    $('#postTable').DataTable(
        'searching': false,
        'language': 
            'url': '../plugins/dataTables.spanish.lang'
        
    )
)

在文档中,有一种方法可以销毁数据表 .destroy(),但是当取消选中该单选按钮并选择另一个单选按钮时,我不知道如何再次创建它

【问题讨论】:

【参考方案1】:

我这样做了,不是最好的解决方案,但假设他们会为不同的 url 获得不同的数据

$(document).ready(function () 
  var tablaBusqueda = $('#postTable').DataTable(
    'searching': false,
    'language': 
      'url': '../plugins/dataTables.spanish.lang'
    
  )
  $('#rbn_buscar_codigo').on('ifChecked', function (event) 

    tablaBusqueda.destroy()
    alert('tabla codigo')
    tablaBusqueda = $('#postTable').DataTable(
      'searching': false,
      'language': 
        'url': '../plugins/dataTables.spanish.lang'
      
    )
  )
  $('#rbn_buscar_descripcion').on('ifChecked', function (event) 
    tablaBusqueda.destroy()
    alert('tabla descripcion')
    tablaBusqueda = $('#postTable').DataTable(

      'language': 
        'url': '../plugins/dataTables.spanish.lang'
      
    )
  )
  $('#rbn_buscar_linea').on('ifChecked', function (event) 
    tablaBusqueda.destroy()
    alert('tabla linea')
    tablaBusqueda = $('#postTable').DataTable(

      'language': 
        'url': '../plugins/dataTables.spanish.lang'
      
    )
  )
  $('#rbn_buscar_seccion').on('ifChecked', function (event) 
    tablaBusqueda.destroy()
    alert('tabla seccion')
    tablaBusqueda = $('#postTable').DataTable(

      'language': 
        'url': '../plugins/dataTables.spanish.lang'
      
    )
  )
  $('#rbn_buscar_todos').on('ifChecked', function (event) 
    tablaBusqueda.destroy()
    alert('tabla todos')
    tablaBusqueda = $('#postTable').DataTable(

      'language': 
        'url': '../plugins/dataTables.spanish.lang'
      
    )
  )

)

【讨论】:

【参考方案2】:

搜索 div id 是 example_filter。只需在选中单选按钮时使用 jquery 隐藏 div。

【讨论】:

以上是关于有没有办法通过特定事件启用/禁用对数据表的搜索?的主要内容,如果未能解决你的问题,请参考以下文章

禁用对通过 Facebook API 发表的特定帖子的评论或点赞

通过代码在 Windows 操作系统上启用和禁用 DST

如何启用/禁用基于事件的 QTreeView 中的项目?

应用程序关闭时的 iOS 定位服务启用/禁用事件

有没有办法在测试中选择性地禁用对实体修改的审计?

实现细粒度启用/禁用推送通知